home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / osi / isode / dosisode / DOSISODE80.ZIP / ISODE8.WRK / PEPY / YACC.C_N < prev   
Encoding:
Text File  |  1992-06-28  |  71.0 KB  |  2,233 lines

  1. extern char *malloc(), *realloc();
  2.  
  3. # line 5 "yacc.y"
  4. #ifndef    lint
  5. static char *rcsid = "$Header: /xtel/isode/isode/pepy/RCS/yacc.y.gnrc,v 9.0 1992/06/16 12:25:01 isode Rel $";
  6. #endif
  7.  
  8. /* 
  9.  * $Header: /xtel/isode/isode/pepy/RCS/yacc.y.gnrc,v 9.0 1992/06/16 12:25:01 isode Rel $
  10.  *
  11.  *
  12.  * $Log: yacc.y.gnrc,v $
  13.  * Revision 9.0  1992/06/16  12:25:01  isode
  14.  * Release 8.0
  15.  *
  16.  */
  17.  
  18. /*
  19.  *                  NOTICE
  20.  *
  21.  *    Acquisition, use, and distribution of this module and related
  22.  *    materials are subject to the restrictions of a license agreement.
  23.  *    Consult the Preface in the User's Manual for the full terms of
  24.  *    this agreement.
  25.  *
  26.  */
  27.  
  28.  
  29. #include <stdio.h>
  30. #include <ctype.h>
  31. #include "pepy.h"
  32.  
  33. #define    YYSTYPE    YYSTKTYPE
  34.  
  35.  
  36. #define    YYDEBUG    1
  37.  
  38. extern int pepydebug;
  39. extern int doexternals;
  40.  
  41. int    tagcontrol = TAG_UNKNOWN;
  42. static int    tagdefault;
  43. static int    listtype;
  44. static OID    modid;
  45.  
  46. static int    yyporting = 0;
  47.  
  48. typedef struct ypa {
  49.     char   *ya_text;
  50.     int        ya_lineno;
  51. }        ypa, *YA;
  52. #define    NULLYA    ((YA) 0)
  53. extern double pow ();
  54.  
  55. static YA  new_action (text, lineno)
  56. char   *text;
  57. int    lineno;
  58. {
  59.     register YA        ya;
  60.  
  61.     if ((ya = (YA) calloc (1, sizeof *ya)) == NULLYA)
  62.     yyerror ("out of memory");
  63.  
  64.     ya -> ya_text = text;
  65.     ya -> ya_lineno = lineno;
  66.  
  67.     return ya;
  68. }
  69. #define    free_action(ya)    (void) free ((char *) (ya))
  70.  
  71. typedef struct    {
  72.     char *ys_structname;
  73.     char *ys_ptrname;
  74. } ysa, *YS;
  75. #define NULLYS ((YS) 0)
  76.  
  77. static YS new_ys (str)
  78. char    *str;
  79. {
  80.     register YS    ys;
  81.     register char *p, *q;
  82.     char c;
  83.  
  84.     if((ys = (YS) malloc (sizeof *ys)) == NULLYS)
  85.     yyerror ("out of memory");
  86.     q = str;
  87.     while (isspace ((u_char)*q)) q++;
  88.     for (p = q; isalnum((u_char)*p) || *p == '_'; p++)
  89.     continue;
  90.     if (*p != '\0') {
  91.     c = *p;
  92.     *p = '\0';
  93.     ys -> ys_structname = new_string (q);
  94.     *p = c;
  95.     }
  96.     else {
  97.     ys -> ys_structname = new_string (q);
  98.     ys -> ys_ptrname = NULLCP;
  99.     free (str);
  100.     return ys;
  101.     }
  102.     for (q = p; *q != '$'; q++)
  103.     if (! *q) {
  104.         free (str);
  105.         ys -> ys_ptrname = NULLCP;
  106.         return ys;
  107.     }
  108.     q++;
  109.     while (isspace ((u_char)*q)) q++;
  110.     for (p = q; isalnum((u_char)*p) || *p == '_'; p++)
  111.     continue;
  112.     *p = '\0';
  113.     ys -> ys_ptrname = new_string (q);
  114.     free (str);
  115.     return ys;
  116. }
  117. #define    free_ys(ys) (void) free ((char *) (ys))
  118.  
  119. static int  final_actions = 0;
  120.  
  121. # line 126 "yacc.y"
  122. typedef union     {
  123.     int        yy_number;
  124.     char   *yy_string;
  125.     YP        yy_type;
  126.     YV        yy_value;
  127.     YT        yy_tag;
  128.     YA        yy_action;
  129.     OID        yy_oid;
  130.     YS        yy_sctrl;
  131.     double  yy_real;
  132. } YYSTYPE;
  133. # define ABSENT 257
  134. # define ACTION 258
  135. # define ANY 259
  136. # define APPLICATION 260
  137. # define BAR 261
  138. # define BGIN 262
  139. # define BIT 263
  140. # define BITSTRING 264
  141. # define BOOLEAN 265
  142. # define BY 266
  143. # define CCE 267
  144. # define CHOICE 268
  145. # define COMMA 269
  146. # define COMPONENT 270
  147. # define COMPONENTS 271
  148. # define COMPONENTSOF 272
  149. # define CONTROL 273
  150. # define DECODER 274
  151. # define DEFAULT 275
  152. # define DEFINED 276
  153. # define DEFINITIONS 277
  154. # define DOT 278
  155. # define DOTDOT 279
  156. # define DOTDOTDOT 280
  157. # define ENCODER 281
  158. # define ENCRYPTED 282
  159. # define END 283
  160. # define ENUMERATED 284
  161. # define EXPORTS 285
  162. # define EXPLICIT 286
  163. # define L_FALSE 287
  164. # define FROM 288
  165. # define ID 289
  166. # define IDENTIFIER 290
  167. # define IMPLICIT 291
  168. # define IMPORTS 292
  169. # define INCLUDES 293
  170. # define INTEGER 294
  171. # define LANGLE 295
  172. # define LBRACE 296
  173. # define LBRACKET 297
  174. # define LITNUMBER 298
  175. # define LITSTRING 299
  176. # define LPAREN 300
  177. # define MIN 301
  178. # define MAX 302
  179. # define NAME 303
  180. # define NIL 304
  181. # define OBJECT 305
  182. # define OCTET 306
  183. # define OCTETSTRING 307
  184. # define OF 308
  185. # define OPTIONAL 309
  186. # define PARAMETERTYPE 310
  187. # define PREFIXES 311
  188. # define PRESENT 312
  189. # define PRINTER 313
  190. # define PRIVATE 314
  191. # define RBRACE 315
  192. # define RBRACKET 316
  193. # define REAL 317
  194. # define RPAREN 318
  195. # define SECTIONS 319
  196. # define SEMICOLON 320
  197. # define SEQUENCE 321
  198. # define SEQUENCEOF 322
  199. # define SET 323
  200. # define SETOF 324
  201. # define SIZE 325
  202. # define STRING 326
  203. # define TAGS 327
  204. # define L_TRUE 328
  205. # define UNIVERSAL 329
  206. # define VALA 330
  207. # define VALB 331
  208. # define VALI 332
  209. # define VALS 333
  210. # define VALP 334
  211. # define VALO 335
  212. # define VALOID 336
  213. # define VALR 337
  214. # define VALQ 338
  215. # define VALX 339
  216. # define VLENGTH 340
  217. # define WITH 341
  218. # define SCTRL 342
  219. # define PLUSINFINITY 343
  220. # define MINUSINFINITY 344
  221. #define yyclearin yychar = -1
  222. #define yyerrok yyerrflag = 0
  223. extern int yychar;
  224. extern int yyerrflag;
  225. #ifndef YYMAXDEPTH
  226. #define YYMAXDEPTH 150
  227. #endif
  228. YYSTYPE yylval, yyval;
  229. # define YYERRCODE 256
  230.  
  231. # line 1069 "yacc.y"
  232.  
  233.  
  234. #ifdef    HPUX
  235. #define    uchar    Uchar
  236. #endif
  237. #include "lex.c"
  238. int yyexca[] ={
  239. -1, 1,
  240.     0, -1,
  241.     -2, 0,
  242. -1, 55,
  243.     283, 14,
  244.     -2, 159,
  245. -1, 199,
  246.     261, 139,
  247.     269, 139,
  248.     273, 139,
  249.     274, 139,
  250.     279, 139,
  251.     281, 139,
  252.     283, 139,
  253.     295, 139,
  254.     313, 139,
  255.     315, 139,
  256.     318, 139,
  257.     319, 139,
  258.     -2, 58,
  259. -1, 203,
  260.     261, 149,
  261.     269, 149,
  262.     273, 149,
  263.     274, 149,
  264.     279, 149,
  265.     281, 149,
  266.     283, 149,
  267.     289, 149,
  268.     295, 149,
  269.     303, 149,
  270.     313, 149,
  271.     315, 149,
  272.     318, 149,
  273.     319, 149,
  274.     -2, 159,
  275. -1, 211,
  276.     279, 198,
  277.     295, 198,
  278.     -2, 186,
  279. -1, 232,
  280.     296, 48,
  281.     -2, 89,
  282. -1, 258,
  283.     269, 149,
  284.     315, 149,
  285.     -2, 159,
  286. -1, 297,
  287.     269, 153,
  288.     315, 153,
  289.     -2, 102,
  290. -1, 301,
  291.     261, 151,
  292.     269, 151,
  293.     273, 151,
  294.     274, 151,
  295.     279, 151,
  296.     281, 151,
  297.     283, 151,
  298.     289, 151,
  299.     295, 151,
  300.     303, 151,
  301.     313, 151,
  302.     315, 151,
  303.     318, 151,
  304.     319, 151,
  305.     -2, 159,
  306.     };
  307. # define YYNPROD 223
  308. # define YYLAST 1018
  309. int yyact[]={
  310.  
  311.    128,   323,   283,   345,     7,    12,   322,   349,   267,   130,
  312.    159,   154,   252,   152,   201,   229,   228,   147,   174,   148,
  313.    143,   246,   149,   171,   249,   139,   127,   156,   363,    34,
  314.    156,   136,   182,    38,   166,    23,    22,   181,   324,    87,
  315.     46,    76,   185,   378,   154,    51,   302,   154,   278,    35,
  316.     56,   253,   211,    60,   293,    34,    70,   394,    73,   393,
  317.    175,   176,   177,   147,   374,   148,   179,   367,   149,   178,
  318.    175,   176,   177,   147,    67,   148,   179,   358,   149,   178,
  319.    298,    66,    93,   175,   176,   177,   147,   386,   148,   179,
  320.    340,   149,   178,   365,    37,   193,   186,    94,   166,   137,
  321.    140,   140,   145,   145,    18,   155,   155,   155,   155,    18,
  322.    155,   184,   167,    68,   361,   172,   145,   355,    20,    69,
  323.    126,   316,    18,   187,   132,   133,   134,    17,   169,    92,
  324.    316,   238,    19,   385,   233,    41,   339,   162,   355,   225,
  325.    346,   305,   355,   225,    24,   279,   294,    20,   360,    42,
  326.    268,    62,   232,   173,    81,   129,   254,   263,   127,   232,
  327.    131,    30,   387,   348,    20,    63,   234,   318,    82,   247,
  328.    131,   317,   354,    17,   250,   341,   315,   242,    30,   244,
  329.    231,   131,   191,    26,   348,   131,   235,   237,   131,   127,
  330.    239,    20,   243,   354,   337,   164,   276,   354,   262,   314,
  331.     17,   286,   329,   328,   145,    19,   281,   224,   226,   270,
  332.      8,   164,   248,    50,   168,    10,   372,   301,    77,   257,
  333.     11,   251,     3,    31,   320,    45,   164,    48,    27,   273,
  334.    272,     4,   271,   188,   155,   284,   285,    89,   208,   155,
  335.    285,   376,   288,   375,   285,   373,   291,   274,   275,   359,
  336.    264,   300,   145,   265,   266,   289,   290,   299,    77,   297,
  337.    190,    21,   256,    39,   269,   127,    33,   180,   223,   150,
  338.    277,   165,   295,    61,   138,    74,    75,     2,    15,   255,
  339.     32,    14,   321,   351,   310,   350,   347,   334,   313,   312,
  340.    215,   311,   309,   250,   221,    25,   326,   304,   331,   218,
  341.    216,   326,   145,   336,   270,    29,   214,   213,   212,   210,
  342.    209,   330,   327,   111,   107,   352,   335,   105,   102,   101,
  343.     80,    79,    78,    65,   353,   307,    72,    71,    57,    59,
  344.     58,   285,    52,   366,    55,    64,   285,    49,   368,   370,
  345.     44,     5,   364,    54,    43,    36,    28,     9,    88,   352,
  346.     16,    90,   326,   264,     6,    13,   377,   183,   353,   307,
  347.    108,   285,   261,   380,   362,   356,   379,   125,   259,   357,
  348.    146,   144,   296,   192,   326,   141,   352,   352,   382,   388,
  349.    389,   383,   285,   384,   391,   353,   353,   123,   392,    97,
  350.    332,   117,   116,    98,   369,   153,   109,   160,   319,   142,
  351.     96,   326,    95,   170,   245,   292,   135,   390,    91,   205,
  352.    113,   227,   100,   255,   381,   195,   219,   203,   204,   202,
  353.      1,   217,    99,   230,   197,   122,   196,   198,     0,   222,
  354.    236,   200,   199,   112,   118,   119,     0,     0,   123,     0,
  355.      0,     0,   117,   116,    98,   114,     0,   109,   344,   104,
  356.    120,   106,   121,   156,   343,   292,   194,     0,   342,     0,
  357.      0,   113,     0,   100,     0,     0,   195,     0,   203,   220,
  358.      0,   206,   207,    99,   306,   197,   122,   196,   198,     0,
  359.      0,   308,   200,   199,   112,   118,   119,     0,     0,   123,
  360.      0,     0,     0,   117,   116,    98,   114,   280,   109,     0,
  361.    104,   120,   106,   121,     0,   338,     0,   194,   303,     0,
  362.      0,   333,   113,     0,   100,     0,     0,   195,     0,   203,
  363.      0,     0,   206,   207,    99,     0,   197,   122,   196,   198,
  364.      0,     0,   308,   200,   199,   112,   118,   119,     0,     0,
  365.    123,     0,     0,     0,   117,   116,    98,   114,     0,   109,
  366.      0,   104,   120,   106,   121,     0,   151,     0,   194,     0,
  367.      0,     0,     0,   113,     0,   100,     0,     0,   195,     0,
  368.    203,     0,     0,   206,   207,    99,     0,   197,   122,   196,
  369.    198,   131,     0,     0,   200,   199,   112,   118,   119,     0,
  370.      0,   123,     0,     0,     0,   117,   116,    98,   114,     0,
  371.    109,     0,   104,   120,   106,   121,     0,     0,     0,   194,
  372.      0,     0,     0,     0,   113,     0,   100,     0,     0,   195,
  373.      0,   203,     0,     0,   206,   207,    99,   164,   197,   122,
  374.    196,   198,     0,     0,     0,   200,   199,   112,   118,   119,
  375.      0,     0,   123,     0,     0,     0,   117,   116,    98,   114,
  376.      0,   109,     0,   104,   120,   106,   121,     0,     0,     0,
  377.    194,     0,   157,   158,   161,   113,   163,   100,     0,     0,
  378.    195,     0,   203,     0,     0,   206,   207,    99,     0,   197,
  379.    122,   196,   198,     0,     0,     0,   200,   199,   112,   118,
  380.    119,     0,     0,   123,     0,     0,     0,   117,   116,    98,
  381.    114,     0,   109,     0,   104,   120,   106,   121,     0,     0,
  382.      0,   194,     0,     0,     0,     0,   113,     0,   100,     0,
  383.      0,   195,     0,   258,     0,     0,   206,   207,    99,     0,
  384.    197,   122,   260,   198,     0,     0,     0,   200,   199,   112,
  385.    118,   119,     0,     0,     0,     0,     0,     0,     0,     0,
  386.      0,   114,     0,     0,     0,   104,   120,   106,   121,   123,
  387.      0,     0,   194,   117,   116,    98,     0,     0,   109,     0,
  388.      0,   329,   328,     0,     0,     0,     0,   206,   207,     0,
  389.      0,     0,   113,     0,   100,     0,     0,     0,     0,   115,
  390.    282,     0,     0,     0,    99,   287,     0,   122,     0,     0,
  391.      0,     0,     0,   325,   103,   112,   118,   119,     0,   123,
  392.      0,     0,     0,   117,   116,    98,     0,   114,   109,     0,
  393.      0,   104,   120,   106,   121,     0,     0,     0,     0,     0,
  394.      0,     0,   113,     0,   100,     0,   241,     0,     0,   115,
  395.      0,   240,     0,     0,    99,     0,     0,   122,     0,     0,
  396.      0,     0,     0,   110,   103,   112,   118,   119,     0,   123,
  397.      0,     0,     0,   117,   116,    98,     0,   114,   109,     0,
  398.      0,   104,   120,   106,   121,     0,     0,     0,     0,     0,
  399.      0,     0,   113,     0,   100,     0,     0,     0,     0,   115,
  400.      0,     0,    40,     0,    99,     0,     0,   122,     0,     0,
  401.      0,     0,     0,   371,   103,   112,   118,   119,     0,   123,
  402.      0,     0,     0,   117,   116,    98,     0,   114,   109,     0,
  403.      0,   104,   120,   106,   121,     0,     0,     0,     0,     0,
  404.      0,     0,   113,    47,   100,     0,     0,     0,     0,   115,
  405.     53,     0,     0,     0,    99,     0,     0,   122,     0,     0,
  406.      0,     0,     0,   110,   103,   112,   118,   119,     0,    83,
  407.     84,    85,    86,     0,     0,     0,     0,   114,     0,     0,
  408.      0,   104,   120,   106,   121,     0,     0,     0,     0,   124,
  409.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  410.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  411.      0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
  412.      0,     0,     0,     0,     0,     0,     0,   189 };
  413. int yypact[]={
  414.  
  415.    -67, -1000,   -46,   -86,   -71, -1000, -1000, -1000,   -98,    -6,
  416.   -291,  -292, -1000,  -171, -1000, -1000, -1000, -1000, -1000,  -117,
  417.    -50, -1000, -1000, -1000, -1000, -1000,  -125,   -66,     8,  -269,
  418.  -1000, -1000,  -217, -1000, -1000, -1000,     1,  -154, -1000,   -60,
  419.   -154, -1000, -1000,   -56,   -79, -1000, -1000,  -154, -1000, -1000,
  420.  -1000, -1000,  -138, -1000,     8,  -200, -1000,  -138,  -279,   -11,
  421.  -1000, -1000, -1000, -1000, -1000,  -135,  -154,  -154,  -154,  -154,
  422.  -1000,  -281,  -138, -1000, -1000,   -51, -1000,  -138, -1000, -1000,
  423.  -1000,  -181,   650, -1000, -1000, -1000,  -154, -1000, -1000,   -67,
  424.  -1000,     7, -1000, -1000,  -112,     7,     7,     7,  -300,  -307,
  425.   -307,  -319,  -316, -1000,  -295,  -331,  -298,  -331,     7,  -331,
  426.    -84,  -296,   -76,   650,  -314,  -260, -1000,  -289,  -294, -1000,
  427.  -1000, -1000,  -218,   -43,  -154, -1000,    -7, -1000, -1000,   383,
  428.  -1000,   128, -1000, -1000, -1000, -1000, -1000, -1000,   -89, -1000,
  429.  -1000,   -88,   -89,  -324, -1000, -1000, -1000, -1000,  -325, -1000,
  430.  -1000,  -232, -1000,  -174, -1000, -1000,  -130,     7,  -232, -1000,
  431.   -177,     7,   550,     7,   650, -1000, -1000, -1000,  -315,  -130,
  432.  -1000, -1000, -1000,  -310,   -68, -1000, -1000, -1000,  -328, -1000,
  433.  -1000, -1000, -1000,  -142, -1000, -1000, -1000, -1000,    -4, -1000,
  434.      7, -1000, -1000, -1000, -1000, -1000, -1000,   434, -1000, -1000,
  435.    332,   281, -1000,  -270, -1000, -1000, -1000, -1000,     3, -1000,
  436.  -1000, -1000, -1000, -1000, -1000, -1000, -1000,   650,   -49,  -130,
  437.    -23,   -99, -1000, -1000,  -158, -1000,  -158, -1000, -1000, -1000,
  438.  -1000,   -90, -1000,  -331, -1000,   -38, -1000,   -95,  -331,   -38,
  439.    650,   650,  -130,   -38,  -130, -1000, -1000, -1000, -1000, -1000,
  440.  -1000,  -247, -1000,  -262, -1000, -1000,  -157,   650,  -270,  -235,
  441.    -12,   -18, -1000, -1000, -1000, -1000, -1000,   -72,  -272,   128,
  442.  -1000,  -130,   179, -1000,  -130,   -97, -1000,  -139, -1000,  -129,
  443.   -148,   500,     7,   650, -1000, -1000,   500,     7,   650,  -130,
  444.   -130,  -102,  -310, -1000, -1000,  -130,  -179, -1000, -1000,  -123,
  445.    383,  -247, -1000,     3, -1000, -1000,   230, -1000, -1000, -1000,
  446.  -1000, -1000, -1000, -1000,  -140, -1000,  -158,  -142, -1000,  -238,
  447.    -20, -1000, -1000,  -161, -1000,   -69,  -130,   650, -1000,  -215,
  448.    -38,  -130,  -248,   -20, -1000,   -38,  -130,   600, -1000, -1000,
  449.    -73,   -24, -1000, -1000, -1000,  -251,   -26,   -28,  -115, -1000,
  450.  -1000, -1000, -1000, -1000, -1000, -1000, -1000,  -275, -1000,   500,
  451.    -38,   383, -1000,   650,  -130, -1000,   650, -1000,   650,  -182,
  452.  -1000,  -100, -1000,  -136, -1000,  -119,  -119, -1000,     7, -1000,
  453.  -1000,   -38,  -130,  -130,  -130, -1000,   600,  -256,  -258, -1000,
  454.  -1000, -1000, -1000, -1000, -1000 };
  455. int yypgo[]={
  456.  
  457.      0,   420,   419,   418,   409,   408,     2,   212,   892,   274,
  458.    406,   404,   271,   403,   277,   273,   276,    14,   402,   400,
  459.    153,   399,   267,   269,   398,   224,     6,     1,    38,   394,
  460.    390,   389,   270,    48,    51,    52,   373,    95,   372,   368,
  461.    362,   157,   268,   360,   357,    28,   355,   354,   281,   278,
  462.    350,   556,   347,   346,   280,   345,   344,   343,     0,   341,
  463.    340,   337,   334,   332,   330,   328,   327,   326,   275,   323,
  464.    322,   321,   320,   319,   318,   317,   314,   313,   312,     9,
  465.    290,   238,   150,   310,   309,   308,   307,   306,   300,   299,
  466.    297,   294,   141,   292,   291,   289,   288,     3,   286,     7,
  467.    285,   283 };
  468. int yyr1[]={
  469.  
  470.      0,    53,    57,     1,    52,    52,    52,    14,    59,    59,
  471.     54,    54,    55,    55,    56,    63,    60,    60,    64,    64,
  472.     65,    61,    61,    66,    66,    67,    67,    68,    16,    16,
  473.     15,    15,    62,    62,    69,    69,    69,    69,    69,     8,
  474.      8,    70,    70,    71,    17,    17,    17,    45,    45,     6,
  475.      6,     5,     5,    18,    18,    18,    18,    18,    18,    18,
  476.     18,    18,    18,    18,    18,    18,    18,    18,    18,    18,
  477.     18,    18,    18,    18,    42,    42,    19,    19,    20,    20,
  478.     20,    20,    20,    20,    77,    77,    11,    11,    12,    12,
  479.     10,    10,     9,     9,    21,    21,    22,    22,    22,    22,
  480.     13,    13,    23,     7,     7,    32,    32,    33,    34,    34,
  481.     24,    24,    30,    30,    25,    25,    26,    26,    26,    26,
  482.     26,    27,    27,    28,    29,    29,    43,    44,    44,    44,
  483.     44,    72,    35,    35,    36,    36,    36,    36,    36,    36,
  484.     36,    36,    36,    36,     2,     2,     4,     4,     3,    37,
  485.     37,    37,    38,    38,    39,    39,    40,    40,    41,    58,
  486.     74,    74,    73,    73,    75,    75,    76,    76,    78,    78,
  487.     47,    46,    46,    48,    48,    49,    49,    50,    31,    31,
  488.     31,    79,    81,    81,    82,    82,    83,    83,    83,    83,
  489.     84,    84,    85,    86,    89,    89,    90,    90,    91,    91,
  490.     92,    92,    80,    87,    88,    88,    93,    94,    94,    95,
  491.     96,    97,    97,    98,    98,    99,    99,    99,   100,   101,
  492.    101,    51,    51 };
  493. int yyr2[]={
  494.  
  495.      0,     1,     1,    24,     5,     5,     3,     5,     3,     2,
  496.      3,     2,     9,     2,     6,     1,     9,     2,     2,     2,
  497.      1,     9,     2,     2,     2,     4,     2,     7,     7,     3,
  498.      2,     2,     6,     2,     5,     5,     5,     9,     2,     3,
  499.      3,     2,     2,    13,     5,     5,     5,     2,     3,     2,
  500.      3,     2,     3,     5,     7,    11,     7,     5,     3,     7,
  501.     11,    13,     7,    11,    13,     9,     9,     7,    15,     7,
  502.      5,     7,     5,     5,     7,     3,     7,    11,     3,     3,
  503.      3,     5,     3,     2,     2,     8,     2,     3,     2,     3,
  504.      2,     3,     2,     3,     5,     2,     3,     5,     3,     2,
  505.      2,     3,     3,     2,     3,     3,     7,    11,     3,     2,
  506.      3,     3,     3,     3,     3,     7,     3,     7,     9,     3,
  507.      5,     7,     3,     5,     3,     7,     9,     3,     3,     3,
  508.      3,     8,     2,     2,     3,     3,     3,     9,     3,     3,
  509.      7,     5,     5,     3,     2,     2,     3,     3,    15,     3,
  510.      3,     7,     7,     3,     3,     3,     3,     7,     3,     0,
  511.      4,     2,     2,     4,     2,     4,     2,     4,     2,     4,
  512.      7,     2,     5,     2,     2,     3,     3,     9,     4,    15,
  513.     15,     8,     2,     2,     6,     2,     2,     2,     2,     2,
  514.      2,     2,     4,     6,     2,     4,     2,     4,     2,     2,
  515.      2,     2,     4,     4,     6,     6,     2,     2,     2,     6,
  516.     10,     2,     6,     4,     2,     2,     2,     2,     2,     2,
  517.      2,     3,     3 };
  518. int yychk[]={
  519.  
  520.  -1000,    -1,   -14,   289,   277,   -59,   -47,   -58,   296,   -52,
  521.    286,   291,   -58,   -46,   -48,   -49,   -50,   298,   -37,   303,
  522.    289,   267,   327,   327,   315,   -48,   300,   278,   -53,   -49,
  523.    303,   289,   -54,   258,   -58,   318,   -55,   311,   -58,   262,
  524.     -8,   289,   303,   -56,   -60,   285,   -58,    -8,   283,   -61,
  525.    292,   -58,   -63,    -8,   -57,   -62,   -58,   -65,   -64,   -16,
  526.    -58,   -15,   289,   303,   -54,   -69,   281,   274,   313,   319,
  527.    -58,   -66,   -67,   -58,   -68,   -16,   320,   269,   -70,   -71,
  528.    -72,   289,   303,    -8,    -8,    -8,    -8,   320,   -68,   288,
  529.    -15,    -5,   310,   -58,   -17,   -18,   -19,   -31,   265,   294,
  530.    284,   -73,   -74,   304,   321,   -75,   323,   -76,   -43,   268,
  531.    303,   -77,   305,   282,   317,   289,   264,   263,   306,   307,
  532.    322,   324,   297,   259,    -8,   -14,   -45,   258,   -58,   267,
  533.    -79,   300,   -45,   -45,   -45,   -10,   331,   -58,    -9,   332,
  534.    -58,    -9,   -21,   339,   -23,   -58,   -22,   333,   335,   338,
  535.    -23,   -51,   308,   -80,   342,   -58,   325,   -51,   -51,   308,
  536.    -80,   -51,   -45,   -51,   295,   -12,   330,   -58,   290,   -17,
  537.    -13,   337,   -58,   -20,   278,   330,   331,   332,   339,   336,
  538.    -22,   326,   326,   -44,   329,   260,   314,   -58,   276,    -8,
  539.    267,   -35,   -36,   -37,   328,   287,   298,   296,   299,   304,
  540.    303,   -17,    -2,   289,    -3,    -4,   343,   344,   -81,   -83,
  541.    -84,   -35,   -85,   -86,   -87,   -80,   -88,   293,   -89,   288,
  542.    341,   -91,   301,   -42,   296,   -58,   296,   -42,   340,   340,
  543.    -12,   -45,   -58,   308,   -79,   -45,   -12,   -45,   308,   -45,
  544.    291,   286,   -17,   -45,   -17,   -11,   336,   -58,    -7,   334,
  545.    -58,   289,   340,   -34,   298,   -37,   266,   -45,   289,   -39,
  546.    298,   -40,   -58,   -41,   -35,   -35,   -35,   278,   -82,   261,
  547.    -58,   -17,   279,   -79,   270,   271,   295,   -32,   -33,   303,
  548.    -32,   296,   -51,    -6,   273,   -58,   296,   -51,    -6,   -17,
  549.    -17,    -6,   -20,   316,   303,   -17,   -38,   -58,   315,   269,
  550.    269,   289,   318,   -81,   -90,   -92,   295,   -35,   302,   -93,
  551.    -79,   -94,   -95,   -96,   296,   315,   269,   300,   315,   -24,
  552.    -25,   -58,   -26,   -27,   -28,   303,   -17,   -78,   272,   271,
  553.    -45,   -17,   -30,   -25,   -58,   -45,   -17,   296,    -7,   315,
  554.    269,   298,   -41,   -82,   -92,   -97,   280,   -98,   303,   -99,
  555.   -100,  -101,   -58,   -79,   312,   257,   -33,   -34,   315,   269,
  556.    309,   275,   -28,   -45,   -17,   308,    -6,   315,    -6,   -29,
  557.    -27,   303,   289,   269,   315,   269,   269,   -99,   318,   -26,
  558.     -6,   -35,   -17,   -17,   -17,   315,   269,   298,   -97,   -97,
  559.    -45,    -6,   -27,   315,   315 };
  560. int yydef[]={
  561.  
  562.      0,    -2,     0,   159,   159,     7,     8,     9,     0,     0,
  563.      0,     0,     6,     0,   171,   173,   174,   175,   176,   150,
  564.    149,     1,     4,     5,   170,   172,     0,     0,   159,     0,
  565.    150,   151,   159,    10,    11,   177,     0,     0,    13,   159,
  566.      0,    39,    40,     0,   159,    15,    17,     0,     2,   159,
  567.     20,    22,   159,    12,   159,    -2,    33,   159,     0,    18,
  568.     19,    29,    30,    31,     3,     0,     0,     0,     0,     0,
  569.     38,     0,    23,    24,    26,     0,    16,     0,    32,    41,
  570.     42,   159,     0,    34,    35,    36,     0,    21,    25,     0,
  571.     28,   159,    51,    52,     0,   159,   159,   159,   159,   159,
  572.    159,   159,   159,    58,   159,   159,   159,   159,   159,   159,
  573.      0,   159,     0,     0,   159,   159,   162,     0,     0,   161,
  574.    164,   166,   159,    84,     0,    27,     0,    47,    48,     0,
  575.    178,     0,    44,    45,    46,    53,    90,    91,   159,    92,
  576.     93,     0,   159,     0,    95,   102,    57,    96,     0,    98,
  577.     99,   159,   165,     0,   221,   222,     0,   159,   159,   167,
  578.      0,   159,     0,   159,     0,    70,    88,    89,   159,    72,
  579.     73,   100,   101,   159,     0,    78,    79,    80,     0,    82,
  580.     83,   163,   160,     0,   127,   128,   129,   130,     0,    37,
  581.    159,   131,   132,   133,   134,   135,   136,   159,   138,    -2,
  582.    150,     0,   143,    -2,   144,   145,   146,   147,   159,   182,
  583.    183,    -2,   187,   188,   189,   190,   191,     0,     0,     0,
  584.      0,   194,   199,    54,     0,    75,     0,    56,    94,    97,
  585.     59,     0,    -2,   159,   202,   159,    62,     0,   159,   159,
  586.      0,     0,    67,   159,    69,    71,    86,    87,    76,   103,
  587.    104,   159,    81,     0,   108,   109,     0,     0,    -2,     0,
  588.    136,   154,   155,   156,   158,   141,   142,     0,     0,     0,
  589.    185,   192,     0,   203,     0,     0,   195,     0,   105,     0,
  590.      0,   159,   159,     0,    49,    50,   159,   159,     0,    65,
  591.     66,     0,   159,   126,    85,    43,     0,    -2,   140,     0,
  592.      0,    -2,   181,   159,   193,   196,     0,   200,   201,   204,
  593.    206,   205,   207,   208,   159,    74,     0,     0,    55,     0,
  594.    110,   111,   114,   116,   119,   159,   122,     0,   168,     0,
  595.    159,    60,     0,   112,   113,   159,    63,     0,    77,   137,
  596.      0,     0,   157,   184,   197,     0,     0,   211,   159,   214,
  597.    215,   216,   217,   218,   219,   220,   106,     0,    61,     0,
  598.    159,     0,   120,     0,   123,   169,     0,    64,     0,     0,
  599.    124,   159,   152,     0,   209,   159,   159,   213,   159,   115,
  600.    117,   159,   121,   180,   179,    68,     0,     0,     0,   212,
  601.    107,   118,   125,   148,   210 };
  602. typedef struct { char *t_name; int t_val; } yytoktype;
  603. #ifndef YYDEBUG
  604. #    define YYDEBUG    0    /* don't allow debugging */
  605. #endif
  606.  
  607. #if YYDEBUG
  608.  
  609. yytoktype yytoks[] =
  610. {
  611.     "ABSENT",    257,
  612.     "ACTION",    258,
  613.     "ANY",    259,
  614.     "APPLICATION",    260,
  615.     "BAR",    261,
  616.     "BGIN",    262,
  617.     "BIT",    263,
  618.     "BITSTRING",    264,
  619.     "BOOLEAN",    265,
  620.     "BY",    266,
  621.     "CCE",    267,
  622.     "CHOICE",    268,
  623.     "COMMA",    269,
  624.     "COMPONENT",    270,
  625.     "COMPONENTS",    271,
  626.     "COMPONENTSOF",    272,
  627.     "CONTROL",    273,
  628.     "DECODER",    274,
  629.     "DEFAULT",    275,
  630.     "DEFINED",    276,
  631.     "DEFINITIONS",    277,
  632.     "DOT",    278,
  633.     "DOTDOT",    279,
  634.     "DOTDOTDOT",    280,
  635.     "ENCODER",    281,
  636.     "ENCRYPTED",    282,
  637.     "END",    283,
  638.     "ENUMERATED",    284,
  639.     "EXPORTS",    285,
  640.     "EXPLICIT",    286,
  641.     "L_FALSE",    287,
  642.     "FROM",    288,
  643.     "ID",    289,
  644.     "IDENTIFIER",    290,
  645.     "IMPLICIT",    291,
  646.     "IMPORTS",    292,
  647.     "INCLUDES",    293,
  648.     "INTEGER",    294,
  649.     "LANGLE",    295,
  650.     "LBRACE",    296,
  651.     "LBRACKET",    297,
  652.     "LITNUMBER",    298,
  653.     "LITSTRING",    299,
  654.     "LPAREN",    300,
  655.     "MIN",    301,
  656.     "MAX",    302,
  657.     "NAME",    303,
  658.     "NIL",    304,
  659.     "OBJECT",    305,
  660.     "OCTET",    306,
  661.     "OCTETSTRING",    307,
  662.     "OF",    308,
  663.     "OPTIONAL",    309,
  664.     "PARAMETERTYPE",    310,
  665.     "PREFIXES",    311,
  666.     "PRESENT",    312,
  667.     "PRINTER",    313,
  668.     "PRIVATE",    314,
  669.     "RBRACE",    315,
  670.     "RBRACKET",    316,
  671.     "REAL",    317,
  672.     "RPAREN",    318,
  673.     "SECTIONS",    319,
  674.     "SEMICOLON",    320,
  675.     "SEQUENCE",    321,
  676.     "SEQUENCEOF",    322,
  677.     "SET",    323,
  678.     "SETOF",    324,
  679.     "SIZE",    325,
  680.     "STRING",    326,
  681.     "TAGS",    327,
  682.     "L_TRUE",    328,
  683.     "UNIVERSAL",    329,
  684.     "VALA",    330,
  685.     "VALB",    331,
  686.     "VALI",    332,
  687.     "VALS",    333,
  688.     "VALP",    334,
  689.     "VALO",    335,
  690.     "VALOID",    336,
  691.     "VALR",    337,
  692.     "VALQ",    338,
  693.     "VALX",    339,
  694.     "VLENGTH",    340,
  695.     "WITH",    341,
  696.     "SCTRL",    342,
  697.     "PLUSINFINITY",    343,
  698.     "MINUSINFINITY",    344,
  699.     "-unknown-",    -1    /* ends search */
  700. };
  701.  
  702. char * yyreds[] =
  703. {
  704.     "-no such reduction-",
  705.     "ModuleDefinition : ModuleIdentifier DEFINITIONS TagDefault CCE",
  706.     "ModuleDefinition : ModuleIdentifier DEFINITIONS TagDefault CCE ModuleActions ModulePrefixes BGIN ModuleBody END",
  707.     "ModuleDefinition : ModuleIdentifier DEFINITIONS TagDefault CCE ModuleActions ModulePrefixes BGIN ModuleBody END ModuleActions",
  708.     "TagDefault : EXPLICIT TAGS",
  709.     "TagDefault : IMPLICIT TAGS",
  710.     "TagDefault : empty",
  711.     "ModuleIdentifier : ID AssignedIdentifier",
  712.     "AssignedIdentifier : ObjectIdentifierValue",
  713.     "AssignedIdentifier : empty",
  714.     "ModuleActions : ACTION",
  715.     "ModuleActions : empty",
  716.     "ModulePrefixes : PREFIXES String String String",
  717.     "ModulePrefixes : empty",
  718.     "ModuleBody : Exports Imports AssignmentList",
  719.     "Exports : EXPORTS",
  720.     "Exports : EXPORTS SymbolsExported SEMICOLON",
  721.     "Exports : empty",
  722.     "SymbolsExported : SymbolList",
  723.     "SymbolsExported : empty",
  724.     "Imports : IMPORTS",
  725.     "Imports : IMPORTS SymbolsImported SEMICOLON",
  726.     "Imports : empty",
  727.     "SymbolsImported : SymbolsFromModuleList",
  728.     "SymbolsImported : empty",
  729.     "SymbolsFromModuleList : SymbolsFromModuleList SymbolsFromModule",
  730.     "SymbolsFromModuleList : SymbolsFromModule",
  731.     "SymbolsFromModule : SymbolList FROM ModuleIdentifier",
  732.     "SymbolList : SymbolList COMMA Symbol",
  733.     "SymbolList : Symbol",
  734.     "Symbol : ID",
  735.     "Symbol : NAME",
  736.     "AssignmentList : AssignmentList Section Assignment",
  737.     "AssignmentList : empty",
  738.     "Section : ENCODER String",
  739.     "Section : DECODER String",
  740.     "Section : PRINTER String",
  741.     "Section : SECTIONS String String String",
  742.     "Section : empty",
  743.     "String : ID",
  744.     "String : NAME",
  745.     "Assignment : Typeassignment",
  746.     "Assignment : Valueassignment",
  747.     "Typeassignment : ID ParameterType Action CCE Action Type",
  748.     "Type : BuiltinType Action",
  749.     "Type : DefinedType Action",
  750.     "Type : SubType Action",
  751.     "Action : ACTION",
  752.     "Action : empty",
  753.     "Control : CONTROL",
  754.     "Control : empty",
  755.     "ParameterType : PARAMETERTYPE",
  756.     "ParameterType : empty",
  757.     "BuiltinType : BOOLEAN PassBool",
  758.     "BuiltinType : INTEGER PassInt NNlist",
  759.     "BuiltinType : ENUMERATED PassInt LBRACE NamedNumberList RBRACE",
  760.     "BuiltinType : Bitstring PassBit NNlist",
  761.     "BuiltinType : Octetstring PassString",
  762.     "BuiltinType : NIL",
  763.     "BuiltinType : SEQUENCE Sctrl PassAny",
  764.     "BuiltinType : SequenceOf Sctrl Action Control Type",
  765.     "BuiltinType : SEQUENCE Sctrl Action LBRACE ElementTypes RBRACE",
  766.     "BuiltinType : SET Sctrl PassAny",
  767.     "BuiltinType : SetOf Sctrl Action Control Type",
  768.     "BuiltinType : SET Sctrl Action LBRACE MemberTypes RBRACE",
  769.     "BuiltinType : Tag Action IMPLICIT Type",
  770.     "BuiltinType : Tag Action EXPLICIT Type",
  771.     "BuiltinType : Tag Action Type",
  772.     "BuiltinType : CHOICE Sctrl Action Control LBRACE AlternativeTypeList RBRACE",
  773.     "BuiltinType : NAME LANGLE Type",
  774.     "BuiltinType : AnyType PassAny",
  775.     "BuiltinType : OBJECT IDENTIFIER PassOid",
  776.     "BuiltinType : ENCRYPTED Type",
  777.     "BuiltinType : REAL PassReal",
  778.     "NNlist : LBRACE NamedNumberList RBRACE",
  779.     "NNlist : empty",
  780.     "DefinedType : ID PassValue ValParameter",
  781.     "DefinedType : ID DOT ID PassValue ValParameter",
  782.     "PassValue : VALA",
  783.     "PassValue : VALB",
  784.     "PassValue : VALI",
  785.     "PassValue : VALX VLENGTH",
  786.     "PassValue : VALOID",
  787.     "PassValue : PassString",
  788.     "AnyType : ANY",
  789.     "AnyType : ANY DEFINED BY NAME",
  790.     "PassOid : VALOID",
  791.     "PassOid : empty",
  792.     "PassAny : VALA",
  793.     "PassAny : empty",
  794.     "PassBool : VALB",
  795.     "PassBool : empty",
  796.     "PassInt : VALI",
  797.     "PassInt : empty",
  798.     "PassBit : VALX VLENGTH",
  799.     "PassBit : NullPass",
  800.     "PassString : VALS",
  801.     "PassString : VALO VLENGTH",
  802.     "PassString : VALQ",
  803.     "PassString : NullPass",
  804.     "PassReal : VALR",
  805.     "PassReal : empty",
  806.     "NullPass : empty",
  807.     "ValParameter : VALP",
  808.     "ValParameter : empty",
  809.     "NamedNumberList : NamedNumber",
  810.     "NamedNumberList : NamedNumberList COMMA NamedNumber",
  811.     "NamedNumber : NAME LPAREN NumericValue RPAREN Action",
  812.     "NumericValue : LITNUMBER",
  813.     "NumericValue : DefinedValue",
  814.     "ElementTypes : OptionalTypeList",
  815.     "ElementTypes : empty",
  816.     "MemberTypes : OptionalTypeList",
  817.     "MemberTypes : empty",
  818.     "OptionalTypeList : OptionalType",
  819.     "OptionalTypeList : OptionalTypeList COMMA OptionalType",
  820.     "OptionalType : NamedType",
  821.     "OptionalType : NamedType OPTIONAL Control",
  822.     "OptionalType : NamedType DEFAULT Value Control",
  823.     "OptionalType : ComponentsOf",
  824.     "OptionalType : NAME ComponentsOf",
  825.     "NamedType : NAME Action Type",
  826.     "NamedType : Type",
  827.     "ComponentsOf : Components Type",
  828.     "AlternativeTypeList : NamedType",
  829.     "AlternativeTypeList : AlternativeTypeList COMMA NamedType",
  830.     "Tag : LBRACKET Class NumericValue RBRACKET",
  831.     "Class : UNIVERSAL",
  832.     "Class : APPLICATION",
  833.     "Class : PRIVATE",
  834.     "Class : empty",
  835.     "Valueassignment : NAME Type CCE Value",
  836.     "Value : BuiltinValue",
  837.     "Value : DefinedValue",
  838.     "BuiltinValue : L_TRUE",
  839.     "BuiltinValue : L_FALSE",
  840.     "BuiltinValue : LITNUMBER",
  841.     "BuiltinValue : LBRACE ID IdentifierList RBRACE",
  842.     "BuiltinValue : LITSTRING",
  843.     "BuiltinValue : NIL",
  844.     "BuiltinValue : LBRACE Values RBRACE",
  845.     "BuiltinValue : NAME Value",
  846.     "BuiltinValue : Type Value",
  847.     "BuiltinValue : RealValue",
  848.     "RealValue : NumericRealValue",
  849.     "RealValue : SpecialRealValue",
  850.     "SpecialRealValue : PLUSINFINITY",
  851.     "SpecialRealValue : MINUSINFINITY",
  852.     "NumericRealValue : LBRACE LITNUMBER COMMA LITNUMBER COMMA LITNUMBER RBRACE",
  853.     "DefinedValue : ID",
  854.     "DefinedValue : NAME",
  855.     "DefinedValue : ID DOT ID",
  856.     "IdentifierList : IdentifierList COMMA ID",
  857.     "IdentifierList : empty",
  858.     "Values : NamedValueList",
  859.     "Values : empty",
  860.     "NamedValueList : NamedValue",
  861.     "NamedValueList : NamedValueList COMMA NamedValue",
  862.     "NamedValue : Value",
  863.     "empty : /* empty */",
  864.     "Octetstring : OCTET STRING",
  865.     "Octetstring : OCTETSTRING",
  866.     "Bitstring : BITSTRING",
  867.     "Bitstring : BIT STRING",
  868.     "SequenceOf : SEQUENCEOF",
  869.     "SequenceOf : SEQUENCE OF",
  870.     "SetOf : SETOF",
  871.     "SetOf : SET OF",
  872.     "Components : COMPONENTSOF",
  873.     "Components : COMPONENTS OF",
  874.     "ObjectIdentifierValue : LBRACE ObjIdComponentList RBRACE",
  875.     "ObjIdComponentList : ObjIdComponent",
  876.     "ObjIdComponentList : ObjIdComponentList ObjIdComponent",
  877.     "ObjIdComponent : NumberForm",
  878.     "ObjIdComponent : NameAndNumberForm",
  879.     "NumberForm : LITNUMBER",
  880.     "NumberForm : DefinedValue",
  881.     "NameAndNumberForm : NAME LPAREN NumberForm RPAREN",
  882.     "SubType : Type SubtypeSpec",
  883.     "SubType : SET SizeConstraint OF Sctrl Action Control Type",
  884.     "SubType : SEQUENCE SizeConstraint OF Sctrl Action Control Type",
  885.     "SubtypeSpec : LPAREN SubtypeAlternative SubtypeAlternativeList RPAREN",
  886.     "SubtypeAlternative : SubtypeValueSet",
  887.     "SubtypeAlternative : SubtypeConstraint",
  888.     "SubtypeAlternativeList : BAR SubtypeAlternative SubtypeAlternativeList",
  889.     "SubtypeAlternativeList : empty",
  890.     "SubtypeValueSet : Value",
  891.     "SubtypeValueSet : ContainedSubType",
  892.     "SubtypeValueSet : ValueRange",
  893.     "SubtypeValueSet : PermittedAlphabet",
  894.     "SubtypeConstraint : SizeConstraint",
  895.     "SubtypeConstraint : InnerTypeConstraint",
  896.     "ContainedSubType : INCLUDES Type",
  897.     "ValueRange : LowerEndPoint DOTDOT UpperEndpoint",
  898.     "LowerEndPoint : LowerEndValue",
  899.     "LowerEndPoint : LowerEndValue LANGLE",
  900.     "UpperEndpoint : UpperEndValue",
  901.     "UpperEndpoint : LANGLE UpperEndValue",
  902.     "LowerEndValue : Value",
  903.     "LowerEndValue : MIN",
  904.     "UpperEndValue : Value",
  905.     "UpperEndValue : MAX",
  906.     "SizeConstraint : SIZE SubtypeSpec",
  907.     "PermittedAlphabet : FROM SubtypeSpec",
  908.     "InnerTypeConstraint : WITH COMPONENT SingleTypeConstraint",
  909.     "InnerTypeConstraint : WITH COMPONENTS MultipleTypeConstraints",
  910.     "SingleTypeConstraint : SubtypeSpec",
  911.     "MultipleTypeConstraints : FullSpecification",
  912.     "MultipleTypeConstraints : PartialSpecification",
  913.     "FullSpecification : LBRACE TypeConstraints RBRACE",
  914.     "PartialSpecification : LBRACE DOTDOTDOT COMMA TypeConstraints RBRACE",
  915.     "TypeConstraints : NamedConstraint",
  916.     "TypeConstraints : NamedConstraint COMMA TypeConstraints",
  917.     "NamedConstraint : NAME Constraint",
  918.     "NamedConstraint : Constraint",
  919.     "Constraint : ValueConstraint",
  920.     "Constraint : PresenceConstraint",
  921.     "Constraint : empty",
  922.     "ValueConstraint : SubtypeSpec",
  923.     "PresenceConstraint : PRESENT",
  924.     "PresenceConstraint : ABSENT",
  925.     "Sctrl : SCTRL",
  926.     "Sctrl : empty",
  927. };
  928. #endif /* YYDEBUG */
  929. #line 1 "/usr/lib/yaccpar"
  930. /*    @(#)yaccpar 1.10 89/04/04 SMI; from S5R3 1.10    */
  931.  
  932. /*
  933. ** Skeleton parser driver for yacc output
  934. */
  935.  
  936. /*
  937. ** yacc user known macros and defines
  938. */
  939. #define YYERROR        goto yyerrlab
  940. #define YYACCEPT    { free(yys); free(yyv); return(0); }
  941. #define YYABORT        { free(yys); free(yyv); return(1); }
  942. #define YYBACKUP( newtoken, newvalue )\
  943. {\
  944.     if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
  945.     {\
  946.         yyerror( "syntax error - cannot backup" );\
  947.         goto yyerrlab;\
  948.     }\
  949.     yychar = newtoken;\
  950.     yystate = *yyps;\
  951.     yylval = newvalue;\
  952.     goto yynewstate;\
  953. }
  954. #define YYRECOVERING()    (!!yyerrflag)
  955. #ifndef YYDEBUG
  956. #    define YYDEBUG    1    /* make debugging available */
  957. #endif
  958.  
  959. /*
  960. ** user known globals
  961. */
  962. int yydebug;            /* set to 1 to get debugging */
  963.  
  964. /*
  965. ** driver internal defines
  966. */
  967. #define YYFLAG        (-1000)
  968.  
  969. /*
  970. ** static variables used by the parser
  971. */
  972. static YYSTYPE *yyv;            /* value stack */
  973. static int *yys;            /* state stack */
  974.  
  975. static YYSTYPE *yypv;            /* top of value stack */
  976. static int *yyps;            /* top of state stack */
  977.  
  978. static int yystate;            /* current state */
  979. static int yytmp;            /* extra var (lasts between blocks) */
  980.  
  981. int yynerrs;            /* number of errors */
  982.  
  983. int yyerrflag;            /* error recovery flag */
  984. int yychar;            /* current input token number */
  985.  
  986.  
  987. /*
  988. ** yyparse - return 0 if worked, 1 if syntax error not recovered from
  989. */
  990. int
  991. yyparse()
  992. {
  993.     register YYSTYPE *yypvt;    /* top of value stack for $vars */
  994.     unsigned yymaxdepth = YYMAXDEPTH;
  995.  
  996.     /*
  997.     ** Initialize externals - yyparse may be called more than once
  998.     */
  999.     yyv = (YYSTYPE*)malloc(yymaxdepth*sizeof(YYSTYPE));
  1000.     yys = (int*)malloc(yymaxdepth*sizeof(int));
  1001.     if (!yyv || !yys)
  1002.     {
  1003.         yyerror( "out of memory" );
  1004.         return(1);
  1005.     }
  1006.     yypv = &yyv[-1];
  1007.     yyps = &yys[-1];
  1008.     yystate = 0;
  1009.     yytmp = 0;
  1010.     yynerrs = 0;
  1011.     yyerrflag = 0;
  1012.     yychar = -1;
  1013.  
  1014.     goto yystack;
  1015.     {
  1016.         register YYSTYPE *yy_pv;    /* top of value stack */
  1017.         register int *yy_ps;        /* top of state stack */
  1018.         register int yy_state;        /* current state */
  1019.         register int  yy_n;        /* internal state number info */
  1020.  
  1021.         /*
  1022.         ** get globals into registers.
  1023.         ** branch to here only if YYBACKUP was called.
  1024.         */
  1025.     yynewstate:
  1026.         yy_pv = yypv;
  1027.         yy_ps = yyps;
  1028.         yy_state = yystate;
  1029.         goto yy_newstate;
  1030.  
  1031.         /*
  1032.         ** get globals into registers.
  1033.         ** either we just started, or we just finished a reduction
  1034.         */
  1035.     yystack:
  1036.         yy_pv = yypv;
  1037.         yy_ps = yyps;
  1038.         yy_state = yystate;
  1039.  
  1040.         /*
  1041.         ** top of for (;;) loop while no reductions done
  1042.         */
  1043.     yy_stack:
  1044.         /*
  1045.         ** put a state and value onto the stacks
  1046.         */
  1047. #if YYDEBUG
  1048.         /*
  1049.         ** if debugging, look up token value in list of value vs.
  1050.         ** name pairs.  0 and negative (-1) are special values.
  1051.         ** Note: linear search is used since time is not a real
  1052.         ** consideration while debugging.
  1053.         */
  1054.         if ( yydebug )
  1055.         {
  1056.             register int yy_i;
  1057.  
  1058.             (void)printf( "State %d, token ", yy_state );
  1059.             if ( yychar == 0 )
  1060.                 (void)printf( "end-of-file\n" );
  1061.             else if ( yychar < 0 )
  1062.                 (void)printf( "-none-\n" );
  1063.             else
  1064.             {
  1065.                 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  1066.                     yy_i++ )
  1067.                 {
  1068.                     if ( yytoks[yy_i].t_val == yychar )
  1069.                         break;
  1070.                 }
  1071.                 (void)printf( "%s\n", yytoks[yy_i].t_name );
  1072.             }
  1073.         }
  1074. #endif /* YYDEBUG */
  1075.         if ( ++yy_ps >= &yys[ yymaxdepth ] )    /* room on stack? */
  1076.         {
  1077.             /*
  1078.             ** reallocate and recover.  Note that pointers
  1079.             ** have to be reset, or bad things will happen
  1080.             */
  1081.             int yyps_index = (yy_ps - yys);
  1082.             int yypv_index = (yy_pv - yyv);
  1083.             int yypvt_index = (yypvt - yyv);
  1084.             yymaxdepth += YYMAXDEPTH;
  1085.             yyv = (YYSTYPE*)realloc((char*)yyv,
  1086.                 yymaxdepth * sizeof(YYSTYPE));
  1087.             yys = (int*)realloc((char*)yys,
  1088.                 yymaxdepth * sizeof(int));
  1089.             if (!yyv || !yys)
  1090.             {
  1091.                 yyerror( "yacc stack overflow" );
  1092.                 return(1);
  1093.             }
  1094.             yy_ps = yys + yyps_index;
  1095.             yy_pv = yyv + yypv_index;
  1096.             yypvt = yyv + yypvt_index;
  1097.         }
  1098.         *yy_ps = yy_state;
  1099.         *++yy_pv = yyval;
  1100.  
  1101.         /*
  1102.         ** we have a new state - find out what to do
  1103.         */
  1104.     yy_newstate:
  1105.         if ( ( yy_n = yypact[ yy_state ] ) <= YYFLAG )
  1106.             goto yydefault;        /* simple state */
  1107. #if YYDEBUG
  1108.         /*
  1109.         ** if debugging, need to mark whether new token grabbed
  1110.         */
  1111.         yytmp = yychar < 0;
  1112. #endif
  1113.         if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  1114.             yychar = 0;        /* reached EOF */
  1115. #if YYDEBUG
  1116.         if ( yydebug && yytmp )
  1117.         {
  1118.             register int yy_i;
  1119.  
  1120.             (void)printf( "Received token " );
  1121.             if ( yychar == 0 )
  1122.                 (void)printf( "end-of-file\n" );
  1123.             else if ( yychar < 0 )
  1124.                 (void)printf( "-none-\n" );
  1125.             else
  1126.             {
  1127.                 for ( yy_i = 0; yytoks[yy_i].t_val >= 0;
  1128.                     yy_i++ )
  1129.                 {
  1130.                     if ( yytoks[yy_i].t_val == yychar )
  1131.                         break;
  1132.                 }
  1133.                 (void)printf( "%s\n", yytoks[yy_i].t_name );
  1134.             }
  1135.         }
  1136. #endif /* YYDEBUG */
  1137.         if ( ( ( yy_n += yychar ) < 0 ) || ( yy_n >= YYLAST ) )
  1138.             goto yydefault;
  1139.         if ( yychk[ yy_n = yyact[ yy_n ] ] == yychar )    /*valid shift*/
  1140.         {
  1141.             yychar = -1;
  1142.             yyval = yylval;
  1143.             yy_state = yy_n;
  1144.             if ( yyerrflag > 0 )
  1145.                 yyerrflag--;
  1146.             goto yy_stack;
  1147.         }
  1148.  
  1149.     yydefault:
  1150.         if ( ( yy_n = yydef[ yy_state ] ) == -2 )
  1151.         {
  1152. #if YYDEBUG
  1153.             yytmp = yychar < 0;
  1154. #endif
  1155.             if ( ( yychar < 0 ) && ( ( yychar = yylex() ) < 0 ) )
  1156.                 yychar = 0;        /* reached EOF */
  1157. #if YYDEBUG
  1158.             if ( yydebug && yytmp )
  1159.             {
  1160.                 register int yy_i;
  1161.  
  1162.                 (void)printf( "Received token " );
  1163.                 if ( yychar == 0 )
  1164.                     (void)printf( "end-of-file\n" );
  1165.                 else if ( yychar < 0 )
  1166.                     (void)printf( "-none-\n" );
  1167.                 else
  1168.                 {
  1169.                     for ( yy_i = 0;
  1170.                         yytoks[yy_i].t_val >= 0;
  1171.                         yy_i++ )
  1172.                     {
  1173.                         if ( yytoks[yy_i].t_val
  1174.                             == yychar )
  1175.                         {
  1176.                             break;
  1177.                         }
  1178.                     }
  1179.                     (void)printf( "%s\n", yytoks[yy_i].t_name );
  1180.                 }
  1181.             }
  1182. #endif /* YYDEBUG */
  1183.             /*
  1184.             ** look through exception table
  1185.             */
  1186.             {
  1187.                 register int *yyxi = yyexca;
  1188.  
  1189.                 while ( ( *yyxi != -1 ) ||
  1190.                     ( yyxi[1] != yy_state ) )
  1191.                 {
  1192.                     yyxi += 2;
  1193.                 }
  1194.                 while ( ( *(yyxi += 2) >= 0 ) &&
  1195.                     ( *yyxi != yychar ) )
  1196.                     ;
  1197.                 if ( ( yy_n = yyxi[1] ) < 0 )
  1198.                     YYACCEPT;
  1199.             }
  1200.         }
  1201.  
  1202.         /*
  1203.         ** check for syntax error
  1204.         */
  1205.         if ( yy_n == 0 )    /* have an error */
  1206.         {
  1207.             /* no worry about speed here! */
  1208.             switch ( yyerrflag )
  1209.             {
  1210.             case 0:        /* new error */
  1211.                 yyerror( "syntax error" );
  1212.                 goto skip_init;
  1213.             yyerrlab:
  1214.                 /*
  1215.                 ** get globals into registers.
  1216.                 ** we have a user generated syntax type error
  1217.                 */
  1218.                 yy_pv = yypv;
  1219.                 yy_ps = yyps;
  1220.                 yy_state = yystate;
  1221.                 yynerrs++;
  1222.             skip_init:
  1223.             case 1:
  1224.             case 2:        /* incompletely recovered error */
  1225.                     /* try again... */
  1226.                 yyerrflag = 3;
  1227.                 /*
  1228.                 ** find state where "error" is a legal
  1229.                 ** shift action
  1230.                 */
  1231.                 while ( yy_ps >= yys )
  1232.                 {
  1233.                     yy_n = yypact[ *yy_ps ] + YYERRCODE;
  1234.                     if ( yy_n >= 0 && yy_n < YYLAST &&
  1235.                         yychk[yyact[yy_n]] == YYERRCODE)                    {
  1236.                         /*
  1237.                         ** simulate shift of "error"
  1238.                         */
  1239.                         yy_state = yyact[ yy_n ];
  1240.                         goto yy_stack;
  1241.                     }
  1242.                     /*
  1243.                     ** current state has no shift on
  1244.                     ** "error", pop stack
  1245.                     */
  1246. #if YYDEBUG
  1247. #    define _POP_ "Error recovery pops state %d, uncovers state %d\n"
  1248.                     if ( yydebug )
  1249.                         (void)printf( _POP_, *yy_ps,
  1250.                             yy_ps[-1] );
  1251. #    undef _POP_
  1252. #endif
  1253.                     yy_ps--;
  1254.                     yy_pv--;
  1255.                 }
  1256.                 /*
  1257.                 ** there is no state on stack with "error" as
  1258.                 ** a valid shift.  give up.
  1259.                 */
  1260.                 YYABORT;
  1261.             case 3:        /* no shift yet; eat a token */
  1262. #if YYDEBUG
  1263.                 /*
  1264.                 ** if debugging, look up token in list of
  1265.                 ** pairs.  0 and negative shouldn't occur,
  1266.                 ** but since timing doesn't matter when
  1267.                 ** debugging, it doesn't hurt to leave the
  1268.                 ** tests here.
  1269.                 */
  1270.                 if ( yydebug )
  1271.                 {
  1272.                     register int yy_i;
  1273.  
  1274.                     (void)printf( "Error recovery discards " );
  1275.                     if ( yychar == 0 )
  1276.                         (void)printf( "token end-of-file\n" );
  1277.                     else if ( yychar < 0 )
  1278.                         (void)printf( "token -none-\n" );
  1279.                     else
  1280.                     {
  1281.                         for ( yy_i = 0;
  1282.                             yytoks[yy_i].t_val >= 0;
  1283.                             yy_i++ )
  1284.                         {
  1285.                             if ( yytoks[yy_i].t_val
  1286.                                 == yychar )
  1287.                             {
  1288.                                 break;
  1289.                             }
  1290.                         }
  1291.                         (void)printf( "token %s\n",
  1292.                             yytoks[yy_i].t_name );
  1293.                     }
  1294.                 }
  1295. #endif /* YYDEBUG */
  1296.                 if ( yychar == 0 )    /* reached EOF. quit */
  1297.                     YYABORT;
  1298.                 yychar = -1;
  1299.                 goto yy_newstate;
  1300.             }
  1301.         }/* end if ( yy_n == 0 ) */
  1302.         /*
  1303.         ** reduction by production yy_n
  1304.         ** put stack tops, etc. so things right after switch
  1305.         */
  1306. #if YYDEBUG
  1307.         /*
  1308.         ** if debugging, print the string that is the user's
  1309.         ** specification of the reduction which is just about
  1310.         ** to be done.
  1311.         */
  1312.         if ( yydebug )
  1313.             (void)printf( "Reduce by (%d) \"%s\"\n",
  1314.                 yy_n, yyreds[ yy_n ] );
  1315. #endif
  1316.         yytmp = yy_n;            /* value to switch over */
  1317.         yypvt = yy_pv;            /* $vars top of value stack */
  1318.         /*
  1319.         ** Look in goto table for next state
  1320.         ** Sorry about using yy_state here as temporary
  1321.         ** register variable, but why not, if it works...
  1322.         ** If yyr2[ yy_n ] doesn't have the low order bit
  1323.         ** set, then there is no action to be done for
  1324.         ** this reduction.  So, no saving & unsaving of
  1325.         ** registers done.  The only difference between the
  1326.         ** code just after the if and the body of the if is
  1327.         ** the goto yy_stack in the body.  This way the test
  1328.         ** can be made before the choice of what to do is needed.
  1329.         */
  1330.         {
  1331.             /* length of production doubled with extra bit */
  1332.             register int yy_len = yyr2[ yy_n ];
  1333.  
  1334.             if ( !( yy_len & 01 ) )
  1335.             {
  1336.                 yy_len >>= 1;
  1337.                 yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  1338.                 yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1339.                     *( yy_ps -= yy_len ) + 1;
  1340.                 if ( yy_state >= YYLAST ||
  1341.                     yychk[ yy_state =
  1342.                     yyact[ yy_state ] ] != -yy_n )
  1343.                 {
  1344.                     yy_state = yyact[ yypgo[ yy_n ] ];
  1345.                 }
  1346.                 goto yy_stack;
  1347.             }
  1348.             yy_len >>= 1;
  1349.             yyval = ( yy_pv -= yy_len )[1];    /* $$ = $1 */
  1350.             yy_state = yypgo[ yy_n = yyr1[ yy_n ] ] +
  1351.                 *( yy_ps -= yy_len ) + 1;
  1352.             if ( yy_state >= YYLAST ||
  1353.                 yychk[ yy_state = yyact[ yy_state ] ] != -yy_n )
  1354.             {
  1355.                 yy_state = yyact[ yypgo[ yy_n ] ];
  1356.             }
  1357.         }
  1358.                     /* save until reenter driver code */
  1359.         yystate = yy_state;
  1360.         yyps = yy_ps;
  1361.         yypv = yy_pv;
  1362.     }
  1363.     /*
  1364.     ** code supplied by user is placed in this switch
  1365.     */
  1366.     switch( yytmp )
  1367.     {
  1368.         
  1369. case 1:
  1370. # line 174 "yacc.y"
  1371. {
  1372.                         mymodule = yypvt[-3].yy_string;
  1373.                     mymoduleid = modid;
  1374.                     pass1 ();
  1375.                 } break;
  1376. case 2:
  1377. # line 180 "yacc.y"
  1378. { pass2 (); final_actions++; } break;
  1379. case 4:
  1380. # line 184 "yacc.y"
  1381.                 tagdefault = 0;
  1382.                 tagcontrol = TAG_EXPLICIT;
  1383.             } break;
  1384. case 5:
  1385. # line 188 "yacc.y"
  1386. {
  1387.                 tagdefault = YP_IMPLICIT;
  1388.                 tagcontrol = TAG_IMPLICIT;
  1389.             } break;
  1390. case 6:
  1391. # line 192 "yacc.y"
  1392. {
  1393.                 tagdefault = 0;
  1394.                 tagcontrol = TAG_UNKNOWN;
  1395.             } break;
  1396. case 7:
  1397. # line 198 "yacc.y"
  1398. { yyval.yy_string = yypvt[-1].yy_string; } break;
  1399. case 8:
  1400. # line 201 "yacc.y"
  1401. { modid = yypvt[-0].yy_oid; } break;
  1402. case 10:
  1403. # line 205 "yacc.y"
  1404. {
  1405.                 if (bflag) {
  1406.                 if (final_actions) 
  1407.                     init_new_file ();
  1408.                 else {
  1409.                     module_actions = yypvt[-0].yy_action -> ya_text;
  1410.                     free_action (yypvt[-0].yy_action);
  1411.                     break;
  1412.                 }
  1413.                 }
  1414.                 if (!dflag) {
  1415.                 if (Cflag > 0) {
  1416.                     if (!Pflag && *sysin)
  1417.                     printf ("# line %d \"%s\"\n",
  1418.                         yypvt[-0].yy_action -> ya_lineno, sysin);
  1419.                     fputs (yypvt[-0].yy_action -> ya_text, stdout);
  1420.                 }
  1421.                 else {
  1422.                     printf ("%%{\n#include \"%s-types.h\"\n",
  1423.                         mymodule);
  1424.                     printf ("%s%%}\n", yypvt[-0].yy_action -> ya_text);
  1425.                     Cflag = -1;
  1426.                 }
  1427.                 }
  1428.                 free_action (yypvt[-0].yy_action);
  1429.                 if (bflag)
  1430.                 end_file ();
  1431.             } break;
  1432. case 12:
  1433. # line 237 "yacc.y"
  1434. {
  1435.                 yyencdflt = yypvt[-2].yy_string;
  1436.                 yydecdflt = yypvt[-1].yy_string;
  1437.                 yyprfdflt = yypvt[-0].yy_string;
  1438.             } break;
  1439. case 15:
  1440. # line 247 "yacc.y"
  1441. { listtype = TBL_EXPORT; doexternals = 0;
  1442.                    yyporting = 1; } break;
  1443. case 16:
  1444. # line 249 "yacc.y"
  1445. {
  1446.                 yyporting = 0;
  1447.             } break;
  1448. case 20:
  1449. # line 259 "yacc.y"
  1450. { listtype = TBL_IMPORT; yyporting = 1; } break;
  1451. case 21:
  1452. # line 260 "yacc.y"
  1453. {
  1454.                 yyporting = 0;
  1455.             } break;
  1456. case 27:
  1457. # line 276 "yacc.y"
  1458. {
  1459.                     addtableref (yypvt[-0].yy_string, modid, listtype);
  1460.                 } break;
  1461. case 28:
  1462. # line 281 "yacc.y"
  1463. { addtable(yypvt[-0].yy_string, listtype); } break;
  1464. case 29:
  1465. # line 282 "yacc.y"
  1466. { addtable (yypvt[-0].yy_string, listtype); } break;
  1467. case 34:
  1468. # line 294 "yacc.y"
  1469. { yysection = YP_ENCODER; yyencpref = yypvt[-0].yy_string;
  1470.               yyprint (NULLCP, 0, 1); } break;
  1471. case 35:
  1472. # line 297 "yacc.y"
  1473. { yysection = YP_DECODER; yydecpref = yypvt[-0].yy_string;
  1474.               yyprint (NULLCP, 0, 1); } break;
  1475. case 36:
  1476. # line 300 "yacc.y"
  1477. { yysection = YP_PRINTER; yyprfpref = yypvt[-0].yy_string;
  1478.               yyprint (NULLCP, 0, 1); } break;
  1479. case 37:
  1480. # line 303 "yacc.y"
  1481. {
  1482.                 yysection = NULL;
  1483.                 if (strcmp (yyencpref = yypvt[-2].yy_string, "none"))
  1484.                 yysection |= YP_ENCODER;
  1485.                 if (strcmp (yydecpref = yypvt[-1].yy_string, "none"))
  1486.                 yysection |= YP_DECODER;
  1487.                 if (strcmp (yyprfpref = yypvt[-0].yy_string, "none"))
  1488.                 yysection |= YP_PRINTER;
  1489.                 yyprint (NULLCP, 0, 1); 
  1490.             } break;
  1491. case 39:
  1492. # line 316 "yacc.y"
  1493. { yyval.yy_string = yypvt[-0].yy_string; } break;
  1494. case 40:
  1495. # line 317 "yacc.y"
  1496. { yyval.yy_string = yypvt[-0].yy_string; } break;
  1497. case 43:
  1498. # line 326 "yacc.y"
  1499. {
  1500.                 if (yypvt[-4].yy_string)
  1501.                     yypvt[-0].yy_type -> yp_param_type = yypvt[-4].yy_string;
  1502.                 if (yypvt[-3].yy_action) {
  1503.                 yypvt[-0].yy_type -> yp_action0 = yypvt[-3].yy_action -> ya_text;
  1504.                 yypvt[-0].yy_type -> yp_act0_lineno= yypvt[-3].yy_action -> ya_lineno;
  1505.                 free_action (yypvt[-3].yy_action);
  1506.                 }
  1507.                 if (yypvt[-1].yy_action) {
  1508.                 if (yypvt[-0].yy_type -> yp_action05 == NULLCP) {
  1509.                     yypvt[-0].yy_type -> yp_action05 = yypvt[-1].yy_action -> ya_text;
  1510.                     yypvt[-0].yy_type -> yp_act05_lineno= yypvt[-1].yy_action -> ya_lineno;
  1511.                     free_action (yypvt[-1].yy_action);
  1512.                 }
  1513.                 else
  1514.                     yyerror("too many preliminary actions associated with type");
  1515.                 }
  1516.                 pass1_type (yyencpref, yydecpref, yyprfpref,
  1517.                     mymodule, yypvt[-5].yy_string, yypvt[-0].yy_type);
  1518.             } break;
  1519. case 44:
  1520. # line 347 "yacc.y"
  1521. {
  1522.                 yyval.yy_type = yypvt[-1].yy_type;
  1523.                 yyval.yy_type -> yp_direction = yysection;
  1524.                 if (yypvt[-0].yy_action) {
  1525.                 yyval.yy_type -> yp_action2 = yypvt[-0].yy_action -> ya_text;
  1526.                 yyval.yy_type -> yp_act2_lineno= yypvt[-0].yy_action -> ya_lineno;
  1527.                 free_action (yypvt[-0].yy_action);
  1528.                 }
  1529.             } break;
  1530. case 45:
  1531. # line 356 "yacc.y"
  1532. {
  1533.                 yyval.yy_type = yypvt[-1].yy_type;
  1534.                 yyval.yy_type -> yp_direction = yysection;
  1535.                 if (yypvt[-0].yy_action) {
  1536.                 yyval.yy_type -> yp_action2 = yypvt[-0].yy_action -> ya_text;
  1537.                 yyval.yy_type -> yp_act2_lineno= yypvt[-0].yy_action -> ya_lineno;
  1538.                 free_action (yypvt[-0].yy_action);
  1539.                 }
  1540.             } break;
  1541. case 46:
  1542. # line 365 "yacc.y"
  1543. {
  1544.                 yyval.yy_type = yypvt[-1].yy_type;
  1545.                 yyval.yy_type -> yp_direction = yysection;
  1546.                 if (yypvt[-0].yy_action) {
  1547.                     yyval.yy_type -> yp_action2 = yypvt[-0].yy_action -> ya_text;
  1548.                 yyval.yy_type -> yp_act2_lineno = yypvt[-0].yy_action -> ya_lineno;
  1549.                 free_action (yypvt[-0].yy_action);
  1550.                 }
  1551.             } break;
  1552. case 48:
  1553. # line 377 "yacc.y"
  1554. { yyval.yy_action = NULLYA; } break;
  1555. case 50:
  1556. # line 381 "yacc.y"
  1557. { yyval.yy_string = NULLCP; } break;
  1558. case 52:
  1559. # line 385 "yacc.y"
  1560. { yyval.yy_string = NULLCP; } break;
  1561. case 53:
  1562. # line 388 "yacc.y"
  1563. {
  1564.                 yyval.yy_type = new_type (YP_BOOL);
  1565.                 yyval.yy_type -> yp_intexp = yypvt[-0].yy_string;
  1566.             } break;
  1567. case 54:
  1568. # line 392 "yacc.y"
  1569. {
  1570.                 yyval.yy_type = new_type (yypvt[-0].yy_value ? YP_INTLIST : YP_INT);
  1571.                 yyval.yy_type -> yp_intexp = yypvt[-1].yy_string;
  1572.                 if (yypvt[-0].yy_value)
  1573.                     yyval.yy_type -> yp_value = yypvt[-0].yy_value;
  1574.                 } break;
  1575. case 55:
  1576. # line 398 "yacc.y"
  1577. {
  1578.                 yyval.yy_type = new_type (YP_ENUMLIST);
  1579.                 yyval.yy_type -> yp_intexp = yypvt[-3].yy_string;
  1580.                 yyval.yy_type -> yp_value = yypvt[-1].yy_value;
  1581.             } break;
  1582. case 56:
  1583. # line 404 "yacc.y"
  1584. {
  1585.                 yyval.yy_type = yypvt[-1].yy_type;
  1586.                     yyval.yy_type -> yp_code = yypvt[-0].yy_value ? YP_BITLIST: YP_BIT;
  1587.                 if (yypvt[-0].yy_value)
  1588.                 yyval.yy_type -> yp_value = yypvt[-0].yy_value;
  1589.             } break;
  1590. case 57:
  1591. # line 410 "yacc.y"
  1592. {
  1593.                 yyval.yy_type = yypvt[-0].yy_type;
  1594.                 yyval.yy_type -> yp_code = YP_OCT;
  1595.             } break;
  1596. case 58:
  1597. # line 414 "yacc.y"
  1598. { yyval.yy_type = new_type (YP_NULL); } break;
  1599. case 59:
  1600. # line 415 "yacc.y"
  1601. {
  1602.                 yyval.yy_type = new_type (YP_SEQ);
  1603.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1604.             } break;
  1605. case 60:
  1606. # line 419 "yacc.y"
  1607. {
  1608.                 yyval.yy_type = new_type (YP_SEQTYPE);
  1609.                 yyval.yy_type -> yp_type = yypvt[-0].yy_type;
  1610.                 if (yypvt[-3].yy_sctrl) {
  1611.                 yyval.yy_type -> yp_structname = yypvt[-3].yy_sctrl -> ys_structname;
  1612.                 yyval.yy_type -> yp_ptrname = yypvt[-3].yy_sctrl -> ys_ptrname;
  1613.                 free_ys (yypvt[-3].yy_sctrl);
  1614.                 }
  1615.                 if (yypvt[-1].yy_string) {
  1616.                 yyval.yy_type -> yp_control = yypvt[-1].yy_string;
  1617.                 yyval.yy_type -> yp_flags |= YP_CONTROLLED;
  1618.                 }
  1619.                 if (yypvt[-2].yy_action) {
  1620.                 yyval.yy_type -> yp_action3 = yypvt[-2].yy_action -> ya_text;
  1621.                 yyval.yy_type -> yp_act3_lineno = yypvt[-2].yy_action -> ya_lineno;
  1622.                 free_action (yypvt[-2].yy_action);
  1623.                 }
  1624.             } break;
  1625. case 61:
  1626. # line 437 "yacc.y"
  1627. {
  1628.                 yyval.yy_type = new_type (YP_SEQLIST);
  1629.                 yyval.yy_type -> yp_type = yypvt[-1].yy_type;
  1630.                 if (yypvt[-4].yy_sctrl) {
  1631.                 yyval.yy_type -> yp_structname = yypvt[-4].yy_sctrl -> ys_structname;
  1632.                 yyval.yy_type -> yp_ptrname = yypvt[-4].yy_sctrl -> ys_ptrname;
  1633.                 free_ys (yypvt[-4].yy_sctrl);
  1634.                 }
  1635.                 if (yypvt[-3].yy_action && yyval.yy_type -> yp_action1 == NULLCP) {
  1636.                 yyval.yy_type -> yp_action1 = yypvt[-3].yy_action -> ya_text;
  1637.                                 yyval.yy_type -> yp_act1_lineno = yypvt[-3].yy_action -> ya_lineno;
  1638.                                 free_action (yypvt[-3].yy_action);
  1639.                             }
  1640.                             else if (yypvt[-3].yy_action)
  1641.                                 yyerror("too many actions associated with SEQUENCE");
  1642.                 } break;
  1643. case 62:
  1644. # line 453 "yacc.y"
  1645. {
  1646.                 yyval.yy_type = new_type (YP_SET);
  1647.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1648.             } break;
  1649. case 63:
  1650. # line 457 "yacc.y"
  1651. {
  1652.                 yyval.yy_type = new_type (YP_SETTYPE);
  1653.                 yyval.yy_type -> yp_type = yypvt[-0].yy_type;
  1654.                 if (yypvt[-3].yy_sctrl) {
  1655.                 yyval.yy_type -> yp_structname = yypvt[-3].yy_sctrl -> ys_structname;
  1656.                 yyval.yy_type -> yp_ptrname = yypvt[-3].yy_sctrl -> ys_ptrname;
  1657.                 free_ys (yypvt[-3].yy_sctrl);
  1658.                 }
  1659.                 if (yypvt[-1].yy_string) {
  1660.                 yyval.yy_type -> yp_control = yypvt[-1].yy_string;
  1661.                 yyval.yy_type -> yp_flags |= YP_CONTROLLED;
  1662.                 }
  1663.                 if (yypvt[-2].yy_action) {
  1664.                 yyval.yy_type -> yp_action3 = yypvt[-2].yy_action -> ya_text;
  1665.                 yyval.yy_type -> yp_act3_lineno = yypvt[-2].yy_action -> ya_lineno;
  1666.                 free_action (yypvt[-2].yy_action);
  1667.                 }
  1668.             } break;
  1669. case 64:
  1670. # line 476 "yacc.y"
  1671. {
  1672.                 yyval.yy_type = new_type (YP_SETLIST);
  1673.                 yyval.yy_type -> yp_type = yypvt[-1].yy_type;
  1674.                 if (yypvt[-4].yy_sctrl) {
  1675.                 yyval.yy_type -> yp_structname = yypvt[-4].yy_sctrl -> ys_structname;
  1676.                 yyval.yy_type -> yp_ptrname = yypvt[-4].yy_sctrl -> ys_ptrname;
  1677.                 free_ys (yypvt[-4].yy_sctrl);
  1678.                 }
  1679.                 if (yypvt[-3].yy_action && yyval.yy_type -> yp_action1 == NULLCP) {
  1680.                                 yyval.yy_type -> yp_action1 = yypvt[-3].yy_action -> ya_text;
  1681.                                 yyval.yy_type -> yp_act1_lineno = yypvt[-3].yy_action -> ya_lineno;
  1682.                                 free_action (yypvt[-3].yy_action);
  1683.                             }
  1684.                             else if (yypvt[-3].yy_action)
  1685.                                 yyerror("too many actions associated with SET");
  1686.                 } break;
  1687. case 65:
  1688. # line 492 "yacc.y"
  1689. {
  1690.                 yyval.yy_type = yypvt[-0].yy_type;
  1691.                 yyval.yy_type -> yp_tag = yypvt[-3].yy_tag;
  1692.                 if (yypvt[-2].yy_action && yyval.yy_type -> yp_action1 == NULLCP) {
  1693.                 yyval.yy_type -> yp_action1 = yypvt[-2].yy_action -> ya_text;
  1694.                 yyval.yy_type -> yp_act1_lineno= yypvt[-2].yy_action -> ya_lineno;
  1695.                 free_action (yypvt[-2].yy_action);
  1696.                 }
  1697.                 else if (yypvt[-2].yy_action)
  1698.                 yyerror("too many actions associated with tagged type");
  1699.                 yyval.yy_type -> yp_flags |= YP_IMPLICIT | YP_TAG;
  1700.             } break;
  1701. case 66:
  1702. # line 504 "yacc.y"
  1703. {
  1704.                 yyval.yy_type = yypvt[-0].yy_type;
  1705.                 yyval.yy_type -> yp_tag = yypvt[-3].yy_tag;
  1706.                 if (yypvt[-2].yy_action && yyval.yy_type -> yp_action1 == NULLCP) {
  1707.                 yyval.yy_type -> yp_action1 = yypvt[-2].yy_action -> ya_text;
  1708.                 yyval.yy_type -> yp_act1_lineno= yypvt[-2].yy_action -> ya_lineno;
  1709.                 free_action (yypvt[-2].yy_action);
  1710.                 }
  1711.                 else if (yypvt[-2].yy_action)
  1712.                 yyerror("too many actions associated with tagged type");
  1713.                 yyval.yy_type -> yp_flags |= YP_TAG;
  1714.             } break;
  1715. case 67:
  1716. # line 516 "yacc.y"
  1717. {
  1718.                 yyval.yy_type = yypvt[-0].yy_type;
  1719.                 yyval.yy_type -> yp_tag = yypvt[-2].yy_tag;
  1720.                 if (yypvt[-1].yy_action && yyval.yy_type -> yp_action1 == NULLCP) {
  1721.                 yyval.yy_type -> yp_action1 = yypvt[-1].yy_action -> ya_text;
  1722.                 yyval.yy_type -> yp_act1_lineno= yypvt[-1].yy_action -> ya_lineno;
  1723.                 free_action (yypvt[-1].yy_action);
  1724.                 }
  1725.                 else if (yypvt[-1].yy_action)
  1726.                 yyerror("too many actions associated with tagged type");
  1727.                 yyval.yy_type -> yp_flags |= (YP_TAG | tagdefault);
  1728.             } break;
  1729. case 68:
  1730. # line 529 "yacc.y"
  1731. {
  1732.                 yyval.yy_type = new_type (YP_CHOICE);
  1733.                 yyval.yy_type -> yp_type = yypvt[-1].yy_type;
  1734.                 if (yypvt[-5].yy_sctrl) {
  1735.                 yyval.yy_type -> yp_structname = yypvt[-5].yy_sctrl -> ys_structname;
  1736.                 yyval.yy_type -> yp_ptrname = yypvt[-5].yy_sctrl -> ys_ptrname;
  1737.                 free_ys (yypvt[-5].yy_sctrl);
  1738.                 }
  1739.                 if (yypvt[-3].yy_string) {
  1740.                 yyval.yy_type -> yp_control = yypvt[-3].yy_string;
  1741.                 yyval.yy_type -> yp_flags |= YP_CONTROLLED;
  1742.                 }
  1743.                 if (yyval.yy_type -> yp_action1 == NULLCP && yypvt[-4].yy_action) {
  1744.                 yyval.yy_type -> yp_action1 = yypvt[-4].yy_action -> ya_text;
  1745.                 yyval.yy_type -> yp_act1_lineno = yypvt[-4].yy_action -> ya_lineno;
  1746.                 free_action (yypvt[-4].yy_action);
  1747.                 }
  1748.                 else if (yypvt[-4].yy_action)
  1749.                 yyerror("too many actions associated with CHOICE");
  1750.             } break;
  1751. case 69:
  1752. # line 549 "yacc.y"
  1753. {
  1754.                 yyval.yy_type = yypvt[-0].yy_type;
  1755.                 yyval.yy_type -> yp_bound = yypvt[-2].yy_string;
  1756.                 yyval.yy_type -> yp_flags |= YP_BOUND;
  1757.             } break;
  1758. case 70:
  1759. # line 554 "yacc.y"
  1760. {
  1761.                 yyval.yy_type = new_type (YP_ANY);
  1762.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1763.             } break;
  1764. case 71:
  1765. # line 558 "yacc.y"
  1766. {
  1767.                 yyval.yy_type = new_type (YP_OID);
  1768.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1769.             } break;
  1770. case 72:
  1771. # line 562 "yacc.y"
  1772. {
  1773.                 yyval.yy_type = yypvt[-0].yy_type;
  1774.                 yyval.yy_type -> yp_tag = new_tag (PE_CLASS_UNIV);
  1775.                 yyval.yy_type -> yp_tag -> yt_value = new_value(YV_NUMBER);
  1776.                 yyval.yy_type -> yp_tag -> yt_value -> yv_number = PE_PRIM_ENCR;
  1777.                 yyval.yy_type -> yp_flags |=
  1778.                     (YP_ENCRYPTED | YP_TAG | YP_IMPLICIT);
  1779.             } break;
  1780. case 73:
  1781. # line 570 "yacc.y"
  1782. {
  1783.                 yyval.yy_type = new_type(YP_REAL);
  1784.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1785.             } break;
  1786. case 74:
  1787. # line 576 "yacc.y"
  1788. { yyval.yy_value = yypvt[-1].yy_value; } break;
  1789. case 75:
  1790. # line 577 "yacc.y"
  1791. {    yyval.yy_value = NULL; } break;
  1792. case 76:
  1793. # line 579 "yacc.y"
  1794. {
  1795.                 yyval.yy_type = yypvt[-1].yy_type;
  1796.                 yyval.yy_type -> yp_code = YP_IDEFINED;
  1797.                 yyval.yy_type -> yp_identifier = yypvt[-2].yy_string;
  1798.                 if (yypvt[-0].yy_string) {
  1799.                 yyval.yy_type -> yp_parm = yypvt[-0].yy_string;
  1800.                 yyval.yy_type -> yp_flags |= YP_PARMVAL;
  1801.                 }
  1802.                 check_impexp (yyval.yy_type);
  1803.             } break;
  1804. case 77:
  1805. # line 589 "yacc.y"
  1806. {
  1807.                 yyval.yy_type = yypvt[-1].yy_type;
  1808.                 yyval.yy_type -> yp_code = YP_IDEFINED;
  1809.                 yyval.yy_type -> yp_identifier = yypvt[-2].yy_string;
  1810.                 yyval.yy_type -> yp_module = yypvt[-4].yy_string;
  1811.                 if (yypvt[-0].yy_string) {
  1812.                 yyval.yy_type -> yp_parm = yypvt[-0].yy_string;
  1813.                 yyval.yy_type -> yp_flags |= YP_PARMVAL;
  1814.                 }
  1815.             } break;
  1816. case 78:
  1817. # line 601 "yacc.y"
  1818. {
  1819.                 yyval.yy_type = new_type (YP_UNDF);
  1820.                 yyval.yy_type -> yp_intexp = NULLCP;
  1821.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1822.                 yyval.yy_type -> yp_prfexp = 'a';
  1823.             } break;
  1824. case 79:
  1825. # line 607 "yacc.y"
  1826. {
  1827.                 yyval.yy_type = new_type (YP_UNDF);
  1828.                 yyval.yy_type -> yp_intexp = yypvt[-0].yy_string;
  1829.                 yyval.yy_type -> yp_strexp = NULLCP;
  1830.                 yyval.yy_type -> yp_prfexp = 'b';
  1831.             } break;
  1832. case 80:
  1833. # line 613 "yacc.y"
  1834. {
  1835.                 yyval.yy_type = new_type (YP_UNDF);
  1836.                 yyval.yy_type -> yp_intexp = yypvt[-0].yy_string;
  1837.                 yyval.yy_type -> yp_strexp = NULLCP;
  1838.                 yyval.yy_type -> yp_prfexp = 'i';
  1839.             } break;
  1840. case 81:
  1841. # line 619 "yacc.y"
  1842. {
  1843.                 yyval.yy_type = new_type (YP_UNDF);
  1844.                 yyval.yy_type -> yp_intexp = yypvt[-0].yy_string;
  1845.                 yyval.yy_type -> yp_strexp = yypvt[-1].yy_string;
  1846.                 yyval.yy_type -> yp_prfexp = 'x';
  1847.             } break;
  1848. case 82:
  1849. # line 625 "yacc.y"
  1850. {
  1851.                 yyval.yy_type = new_type (YP_UNDF);
  1852.                 yyval.yy_type -> yp_intexp = NULLCP;
  1853.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1854.                 yyval.yy_type -> yp_prfexp = 'O';
  1855.             } break;
  1856. case 87:
  1857. # line 639 "yacc.y"
  1858. { yyval.yy_string = NULLCP; } break;
  1859. case 89:
  1860. # line 643 "yacc.y"
  1861. { yyval.yy_string = NULLCP; } break;
  1862. case 91:
  1863. # line 647 "yacc.y"
  1864. { yyval.yy_string = NULLCP; } break;
  1865. case 93:
  1866. # line 651 "yacc.y"
  1867. { yyval.yy_string = NULLCP; } break;
  1868. case 94:
  1869. # line 654 "yacc.y"
  1870. {
  1871.                 yyval.yy_type = new_type (YP_UNDF);
  1872.                 yyval.yy_type -> yp_intexp = yypvt[-0].yy_string;
  1873.                 yyval.yy_type -> yp_strexp = yypvt[-1].yy_string;
  1874.             } break;
  1875. case 96:
  1876. # line 662 "yacc.y"
  1877. {
  1878.                 yyval.yy_type = new_type (YP_UNDF);
  1879.                 yyval.yy_type -> yp_intexp = NULLCP;
  1880.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1881.                 yyval.yy_type -> yp_prfexp = 's';
  1882.             } break;
  1883. case 97:
  1884. # line 668 "yacc.y"
  1885. {
  1886.                 yyval.yy_type = new_type (YP_UNDF);
  1887.                 yyval.yy_type -> yp_intexp = yypvt[-0].yy_string;
  1888.                 yyval.yy_type -> yp_strexp = yypvt[-1].yy_string;
  1889.                 yyval.yy_type -> yp_prfexp = 'o';
  1890.             } break;
  1891. case 98:
  1892. # line 674 "yacc.y"
  1893. {
  1894.                 yyval.yy_type = new_type (YP_UNDF);
  1895.                 yyval.yy_type -> yp_intexp = NULLCP;
  1896.                 yyval.yy_type -> yp_strexp = yypvt[-0].yy_string;
  1897.                 yyval.yy_type -> yp_prfexp = 'q';
  1898.             } break;
  1899. case 101:
  1900. # line 684 "yacc.y"
  1901. { yyval.yy_string = NULLCP; } break;
  1902. case 102:
  1903. # line 687 "yacc.y"
  1904. {
  1905.                 yyval.yy_type = new_type (YP_UNDF);
  1906.                 yyval.yy_type -> yp_intexp = NULLCP;
  1907.                 yyval.yy_type -> yp_strexp = NULLCP;
  1908.             } break;
  1909. case 104:
  1910. # line 695 "yacc.y"
  1911. { yyval.yy_string = NULLCP; } break;
  1912. case 105:
  1913. # line 698 "yacc.y"
  1914. { yyval.yy_value = yypvt[-0].yy_value; } break;
  1915. case 106:
  1916. # line 699 "yacc.y"
  1917. {
  1918.                 yyval.yy_value = add_value (yypvt[-2].yy_value, yypvt[-0].yy_value);
  1919.             } break;
  1920. case 107:
  1921. # line 703 "yacc.y"
  1922. {
  1923.                 yyval.yy_value = yypvt[-2].yy_value;
  1924.                 yyval.yy_value -> yv_named = yypvt[-4].yy_string;
  1925.                 yyval.yy_value -> yv_flags |= YV_NAMED;
  1926.                 if (yypvt[-0].yy_action) {
  1927.                 yyval.yy_value -> yv_action = yypvt[-0].yy_action -> ya_text;
  1928.                 yyval.yy_value -> yv_act_lineno = yypvt[-0].yy_action -> ya_lineno;
  1929.                 free_action (yypvt[-0].yy_action);
  1930.                 }
  1931.             } break;
  1932. case 108:
  1933. # line 714 "yacc.y"
  1934. {
  1935.                 yyval.yy_value = new_value (YV_NUMBER);
  1936.                 yyval.yy_value -> yv_number = yypvt[-0].yy_number;
  1937.             } break;
  1938. case 110:
  1939. # line 721 "yacc.y"
  1940. { yyval.yy_type = yypvt[-0].yy_type; } break;
  1941. case 111:
  1942. # line 722 "yacc.y"
  1943. { yyval.yy_type = NULLYP; } break;
  1944. case 112:
  1945. # line 724 "yacc.y"
  1946. { yyval.yy_type = yypvt[-0].yy_type; } break;
  1947. case 113:
  1948. # line 726 "yacc.y"
  1949. { yyval.yy_type = NULLYP; } break;
  1950. case 114:
  1951. # line 728 "yacc.y"
  1952. { yyval.yy_type = yypvt[-0].yy_type; } break;
  1953. case 115:
  1954. # line 729 "yacc.y"
  1955. {
  1956.                 yyval.yy_type = add_type (yypvt[-2].yy_type, yypvt[-0].yy_type);
  1957.             } break;
  1958. case 116:
  1959. # line 733 "yacc.y"
  1960. { yyval.yy_type = yypvt[-0].yy_type; } break;
  1961. case 117:
  1962. # line 734 "yacc.y"
  1963. {
  1964.                 yyval.yy_type = yypvt[-2].yy_type;
  1965.                 yyval.yy_type -> yp_flags |= YP_OPTIONAL;
  1966.                 if (yypvt[-0].yy_string) {
  1967.                 yyval.yy_type -> yp_optcontrol = yypvt[-0].yy_string;
  1968.                 yyval.yy_type -> yp_flags |= YP_OPTCONTROL;
  1969.                 }
  1970.             } break;
  1971. case 118:
  1972. # line 742 "yacc.y"
  1973. {
  1974.                 yyval.yy_type = yypvt[-3].yy_type;
  1975.                 yyval.yy_type -> yp_default = yypvt[-1].yy_value;
  1976.                 yyval.yy_type -> yp_flags |= YP_DEFAULT;
  1977.                 if (yypvt[-0].yy_string) {
  1978.                 yyval.yy_type -> yp_optcontrol = yypvt[-0].yy_string;
  1979.                 yyval.yy_type -> yp_flags |= YP_OPTCONTROL;
  1980.                 }
  1981.             } break;
  1982. case 119:
  1983. # line 751 "yacc.y"
  1984. { yyval.yy_type = yypvt[-0].yy_type; } break;
  1985. case 120:
  1986. # line 752 "yacc.y"
  1987. { yyval.yy_type = yypvt[-0].yy_type; yyval.yy_type->yp_id = yypvt[-1].yy_string; } break;
  1988. case 121:
  1989. # line 754 "yacc.y"
  1990. {
  1991.                 yyval.yy_type = yypvt[-0].yy_type;
  1992.                 yyval.yy_type -> yp_id = yypvt[-2].yy_string;
  1993.                 if (yyval.yy_type -> yp_action1 == NULLCP && yypvt[-1].yy_action) {
  1994.                 yyval.yy_type -> yp_action1 = yypvt[-1].yy_action -> ya_text;
  1995.                 yyval.yy_type -> yp_act1_lineno = yypvt[-1].yy_action -> ya_lineno;
  1996.                 free_action (yypvt[-1].yy_action);
  1997.                 }
  1998.                 yyval.yy_type -> yp_flags |= YP_ID;
  1999.             } break;
  2000. case 122:
  2001. # line 764 "yacc.y"
  2002. { yyval.yy_type = yypvt[-0].yy_type; } break;
  2003. case 123:
  2004. # line 766 "yacc.y"
  2005. {
  2006.                 yyval.yy_type = yypvt[-0].yy_type;
  2007.                 yyval.yy_type -> yp_flags |= YP_COMPONENTS;
  2008.             } break;
  2009. case 124:
  2010. # line 771 "yacc.y"
  2011. { yyval.yy_type = yypvt[-0].yy_type; } break;
  2012. case 125:
  2013. # line 772 "yacc.y"
  2014. {
  2015.                 yyval.yy_type = add_type (yypvt[-2].yy_type, yypvt[-0].yy_type);
  2016.             } break;
  2017. case 126:
  2018. # line 777 "yacc.y"
  2019. {
  2020.                 yyval.yy_tag = yypvt[-2].yy_tag;
  2021.                 yyval.yy_tag -> yt_value = yypvt[-1].yy_value;
  2022.             } break;
  2023. case 127:
  2024. # line 782 "yacc.y"
  2025. { yyval.yy_tag = new_tag (PE_CLASS_UNIV); } break;
  2026. case 128:
  2027. # line 783 "yacc.y"
  2028. { yyval.yy_tag = new_tag (PE_CLASS_APPL); } break;
  2029. case 129:
  2030. # line 784 "yacc.y"
  2031. { yyval.yy_tag = new_tag (PE_CLASS_PRIV); } break;
  2032. case 130:
  2033. # line 785 "yacc.y"
  2034. { yyval.yy_tag = new_tag (PE_CLASS_CONT); } break;
  2035. case 134:
  2036. # line 795 "yacc.y"
  2037. {
  2038.                 yyval.yy_value = new_value (YV_BOOL);
  2039.                 yyval.yy_value -> yv_number = 1;
  2040.             } break;
  2041. case 135:
  2042. # line 799 "yacc.y"
  2043. {
  2044.                 yyval.yy_value = new_value (YV_BOOL);
  2045.                 yyval.yy_value -> yv_number = 0;
  2046.             } break;
  2047. case 136:
  2048. # line 803 "yacc.y"
  2049. {
  2050.                 yyval.yy_value = new_value (YV_NUMBER);
  2051.                 yyval.yy_value -> yv_number = yypvt[-0].yy_number;
  2052.             } break;
  2053. case 137:
  2054. # line 807 "yacc.y"
  2055. {
  2056.                 yyval.yy_value = new_value (YV_IDLIST);
  2057.                 yyval.yy_value -> yv_idlist = new_value (YV_IDEFINED);
  2058.                 yyval.yy_value -> yv_idlist -> yv_identifier = yypvt[-2].yy_string;
  2059.                 if (yypvt[-1].yy_value)
  2060.                     yyval.yy_value = add_value (yyval.yy_value, yypvt[-1].yy_value);
  2061.             } break;
  2062. case 138:
  2063. # line 814 "yacc.y"
  2064. {
  2065.                 yyval.yy_value = new_value (YV_STRING);
  2066.                 yyval.yy_value -> yv_string = yypvt[-0].yy_string;
  2067.             } break;
  2068. case 139:
  2069. # line 818 "yacc.y"
  2070. { yyval.yy_value = new_value (YV_NULL); } break;
  2071. case 140:
  2072. # line 819 "yacc.y"
  2073. {
  2074.                 yyval.yy_value = new_value (YV_VALIST);
  2075.                 yyval.yy_value -> yv_idlist = yypvt[-1].yy_value;
  2076.             } break;
  2077. case 141:
  2078. # line 823 "yacc.y"
  2079. {
  2080.                 yyval.yy_value = yypvt[-0].yy_value;
  2081.                 yyval.yy_value -> yv_id = yypvt[-1].yy_string;
  2082.                 yyval.yy_value -> yv_flags |= YV_ID;
  2083.             } break;
  2084. case 142:
  2085. # line 828 "yacc.y"
  2086. {
  2087.                 yyval.yy_value = yypvt[-0].yy_value;
  2088.                 yyval.yy_value -> yv_type = yypvt[-1].yy_type;
  2089.                 yyval.yy_value -> yv_flags |= YV_TYPE;
  2090.             } break;
  2091. case 143:
  2092. # line 833 "yacc.y"
  2093. {
  2094.                 yyval.yy_value = new_value (YV_REAL);
  2095.                 yyval.yy_value -> yv_real = yypvt[-0].yy_real;
  2096.             } break;
  2097. case 146:
  2098. # line 843 "yacc.y"
  2099. { yyval.yy_real = PE_REAL_INFINITY;} break;
  2100. case 147:
  2101. # line 844 "yacc.y"
  2102. { yyval.yy_real = - PE_REAL_INFINITY; } break;
  2103. case 148:
  2104. # line 848 "yacc.y"
  2105. {
  2106.                 if (yypvt[-3].yy_number != 2 && yypvt[-3].yy_number != 10)
  2107.                     myyerror ("Illegal base value %d", yypvt[-3].yy_number);
  2108.                 yyval.yy_real = yypvt[-5].yy_number * pow ((double)yypvt[-3].yy_number, (double)yypvt[-1].yy_number);
  2109.             } break;
  2110. case 149:
  2111. # line 855 "yacc.y"
  2112. {
  2113.                 yyval.yy_value = new_value (YV_IDEFINED);
  2114.                 yyval.yy_value -> yv_identifier = yypvt[-0].yy_string;
  2115.             } break;
  2116. case 150:
  2117. # line 859 "yacc.y"
  2118. {    /* XXX */
  2119.                 yyval.yy_value = new_value (YV_IDEFINED);
  2120.                 yyval.yy_value -> yv_identifier = yypvt[-0].yy_string;
  2121.                 yyval.yy_value -> yv_flags |= YV_BOUND;
  2122.             } break;
  2123. case 151:
  2124. # line 864 "yacc.y"
  2125. {
  2126.                 yyval.yy_value = new_value (YV_IDEFINED);
  2127.                 yyval.yy_value -> yv_identifier = yypvt[-0].yy_string;
  2128.                 yyval.yy_value -> yv_module = yypvt[-2].yy_string;
  2129.             } break;
  2130. case 152:
  2131. # line 871 "yacc.y"
  2132. {
  2133.                 yyval.yy_value = new_value (YV_IDEFINED);
  2134.                 yyval.yy_value -> yv_identifier = yypvt[-0].yy_string;
  2135.                 if (yypvt[-2].yy_value)
  2136.                     yyval.yy_value = add_value (yypvt[-2].yy_value, yyval.yy_value);
  2137.             } break;
  2138. case 153:
  2139. # line 877 "yacc.y"
  2140. { yyval.yy_value = NULLYV; } break;
  2141. case 154:
  2142. # line 880 "yacc.y"
  2143. { yyval.yy_value = yypvt[-0].yy_value; } break;
  2144. case 155:
  2145. # line 881 "yacc.y"
  2146. { yyval.yy_value = NULLYV; } break;
  2147. case 156:
  2148. # line 883 "yacc.y"
  2149. { yyval.yy_value = yypvt[-0].yy_value; } break;
  2150. case 157:
  2151. # line 884 "yacc.y"
  2152. {
  2153.                 yyval.yy_value = add_value (yypvt[-2].yy_value, yypvt[-0].yy_value);
  2154.             } break;
  2155. case 158:
  2156. # line 888 "yacc.y"
  2157. { yyval.yy_value = yypvt[-0].yy_value; } break;
  2158. case 170:
  2159. # line 912 "yacc.y"
  2160. { yyval.yy_oid = yypvt[-1].yy_oid; } break;
  2161. case 172:
  2162. # line 917 "yacc.y"
  2163. {
  2164.                 yyval.yy_oid = addoid(yypvt[-1].yy_oid, yypvt[-0].yy_oid);
  2165.                 oid_free (yypvt[-1].yy_oid);
  2166.                 oid_free (yypvt[-0].yy_oid);
  2167.             } break;
  2168. case 175:
  2169. # line 928 "yacc.y"
  2170. { yyval.yy_oid = int2oid (yypvt[-0].yy_number); } break;
  2171. case 176:
  2172. # line 929 "yacc.y"
  2173. {
  2174.                 yyval.yy_oid = oidlookup(yypvt[-0].yy_value->yv_identifier);
  2175.                 free((char *)yypvt[-0].yy_value);
  2176.             } break;
  2177. case 177:
  2178. # line 935 "yacc.y"
  2179. {
  2180.                 free (yypvt[-3].yy_string);
  2181.                 yyval.yy_oid = yypvt[-1].yy_oid;
  2182.             } break;
  2183. case 179:
  2184. # line 942 "yacc.y"
  2185. {
  2186.                 yyval.yy_type = new_type (YP_SETTYPE);
  2187.                 yyval.yy_type -> yp_type = yypvt[-0].yy_type;
  2188.                 if (yypvt[-3].yy_sctrl) {
  2189.                 yyval.yy_type -> yp_structname = yypvt[-3].yy_sctrl -> ys_structname;
  2190.                 yyval.yy_type -> yp_ptrname = yypvt[-3].yy_sctrl -> ys_ptrname;
  2191.                 free_ys (yypvt[-3].yy_sctrl);
  2192.                 }
  2193.                 if (yypvt[-1].yy_string) {
  2194.                     yyval.yy_type -> yp_control = yypvt[-1].yy_string;
  2195.                 yyval.yy_type -> yp_flags |= YP_CONTROLLED;
  2196.                 }
  2197.                 if (yypvt[-2].yy_action) {
  2198.                     yyval.yy_type -> yp_action3 = yypvt[-2].yy_action -> ya_text;
  2199.                 yyval.yy_type -> yp_act2_lineno = yypvt[-2].yy_action -> ya_lineno;
  2200.                 free_action (yypvt[-2].yy_action);
  2201.                 }                  
  2202.                 } break;
  2203. case 180:
  2204. # line 961 "yacc.y"
  2205. {
  2206.                 yyval.yy_type = new_type (YP_SEQTYPE);
  2207.                 yyval.yy_type -> yp_type = yypvt[-0].yy_type;
  2208.                 if (yypvt[-3].yy_sctrl) {
  2209.                 yyval.yy_type -> yp_structname = yypvt[-3].yy_sctrl -> ys_structname;
  2210.                 yyval.yy_type -> yp_ptrname = yypvt[-3].yy_sctrl -> ys_ptrname;
  2211.                 free_ys (yypvt[-3].yy_sctrl);
  2212.                 }
  2213.                 if (yypvt[-1].yy_string) {
  2214.                 yyval.yy_type -> yp_control = yypvt[-1].yy_string;
  2215.                 yyval.yy_type -> yp_flags |= YP_CONTROLLED;
  2216.                 }
  2217.                 if (yypvt[-2].yy_action) {
  2218.                 yyval.yy_type -> yp_action3 = yypvt[-2].yy_action -> ya_text;
  2219.                 yyval.yy_type -> yp_act3_lineno = yypvt[-2].yy_action -> ya_lineno;
  2220.                 free_action (yypvt[-2].yy_action);
  2221.                 }
  2222.             } break;
  2223. case 221:
  2224. # line 1066 "yacc.y"
  2225. { yyval.yy_sctrl = new_ys (yypvt[-0].yy_string); } break;
  2226. case 222:
  2227. # line 1067 "yacc.y"
  2228. { yyval.yy_sctrl = NULLYS; } break;
  2229.     }
  2230.     goto yystack;        /* reset registers in driver code */
  2231. }
  2232.